diff --git a/src/calng/calcat_utils.py b/src/calng/calcat_utils.py
index cb8a67192628d79ea30283c6f05a1f56dc8ae339..76b27adf0d18e3129daf5e331bd5492caef59ce1 100644
--- a/src/calng/calcat_utils.py
+++ b/src/calng/calcat_utils.py
@@ -22,6 +22,7 @@ from karabo.bound import (
     SLOT_ELEMENT,
     STRING_ELEMENT,
     UINT32_ELEMENT,
+    VECTOR_UINT32_ELEMENT,
 )
 from karabo import version as karaboVersion
 from pkg_resources import parse_version
@@ -73,16 +74,16 @@ def add_status_schema_from_enum(schema, prefix, enum_class):
             .initialValue("")
             .commit(),
 
-            STRING_ELEMENT(schema)
-            .key(f"{constant_node}.conditionId")
+            VECTOR_UINT32_ELEMENT(schema)
+            .key(f"{constant_node}.conditionIds")
             .readOnly()
-            .initialValue("")
+            .initialValue([])
             .commit(),
 
-            STRING_ELEMENT(schema)
-            .key(f"{constant_node}.constantId")
+            VECTOR_UINT32_ELEMENT(schema)
+            .key(f"{constant_node}.constantIds")
             .readOnly()
-            .initialValue("")
+            .initialValue([])
             .commit(),
 
             STRING_ELEMENT(schema)
@@ -402,7 +403,7 @@ class BaseCalcatFriend:
         return resp["data"]["id"]
 
     @utils.threadsafe_cache
-    def condition_id(self, pdu, condition):
+    def condition_ids(self, pdu, condition):
         # modifying condition parameter messes with cache
         condition_with_detector = copy.copy(condition)
         condition_with_detector["Detector UUID"] = pdu
@@ -415,18 +416,17 @@ class BaseCalcatFriend:
             ConditionNotFound,
             f"Failed to find condition {condition} for pdu {pdu}",
         )
-        return resp["data"][0]["id"]
+        return [d["id"] for d in resp["data"]]
 
-    @utils.threadsafe_cache
-    def constant_id(self, calibration_id, condition_id):
-        resp = CalibrationConstant.get_by_uk(
+    def constant_ids(self, calibration_id, condition_ids):
+        resp = CalibrationConstant.get_all_by_conditions(
             self.client,
             calibration_id=calibration_id,
             detector_type_id=self.detector_type_id,
-            condition_id=condition_id,
+            condition_ids=condition_ids,
         )
         self._check_resp(resp, warning="Failed to retrieve constant ID")
-        return resp["data"]["id"]
+        return [d["id"] for d in resp["data"]]
 
     def get_constant_version(self, constant):
         # TODO: catch exceptions, give warnings appropriately
@@ -447,19 +447,19 @@ class BaseCalcatFriend:
         self._set_status(constant, "calibrationId", calibration_id)
 
         condition = self._constants_need_conditions[constant]()
-        condition_id = self.condition_id(
+        condition_ids = self.condition_ids(
             self._karabo_da_to_float_uuid[karabo_da], condition
         )
-        self._set_status(constant, "conditionId", condition_id)
+        self._set_status(constant, "conditionIds", condition_ids)
 
-        constant_id = self.constant_id(
-            calibration_id=calibration_id, condition_id=condition_id
+        constant_ids = self.constant_ids(
+            calibration_id=calibration_id, condition_ids=condition_ids
         )
-        self._set_status(constant, "constantId", constant_id)
+        self._set_status(constant, "constantIds", constant_ids)
 
         resp = CalibrationConstantVersion.get_closest_by_time(
             self.client,
-            calibration_constant_ids=[constant_id],
+            calibration_constant_ids=constant_ids,
             physical_detector_unit_id=self._karabo_da_to_id[karabo_da],
             event_at=self._get_param("constantVersionEventAt"),
             snapshot_at=None,