diff --git a/src/python/PyBis/pybis/pybis.py b/src/python/PyBis/pybis/pybis.py
index 8750b2c2d9bbd78cb2e9d694cc2bee22d3f13c31..1fb4b213e12184c94d71b73d207d0d42e37fc169 100644
--- a/src/python/PyBis/pybis/pybis.py
+++ b/src/python/PyBis/pybis/pybis.py
@@ -431,26 +431,33 @@ def _gen_search_criteria(req):
             sreq["criteria"] = [_common_search(
                 "as.dto.common.search.CodeSearchCriteria", val.upper()
             )]
-        elif key == "permid":
-            sreq["criteria"] = [_common_search(
-                "as.dto.common.search.PermIdSearchCriteria", val
-            )]
         elif key == "identifier":
-            si = split_identifier(val)
-            sreq["criteria"] = []
-            if "space" in si:
-                sreq["criteria"].append(
-                    _gen_search_criteria({"space": "Space", "code": si["space"]})
-                )
-            if "experiment" in si:
-                pass
+            if is_identifier(val):
+                # if we have an identifier, we need to search in Space and Code separately
+                si = split_identifier(val)
+                sreq["criteria"] = []
+                if "space" in si:
+                    sreq["criteria"].append(
+                        _gen_search_criteria({"space": "Space", "code": si["space"]})
+                    )
+                if "experiment" in si:
+                    pass
 
-            if "code" in si:
-                sreq["criteria"].append(
-                    _common_search(
-                        "as.dto.common.search.CodeSearchCriteria", si["code"].upper()
+                if "code" in si:
+                    sreq["criteria"].append(
+                        _common_search(
+                            "as.dto.common.search.CodeSearchCriteria", si["code"].upper()
+                        )
                     )
-                )
+            elif is_permid(val):
+                sreq["criteria"] = [_common_search(
+                    "as.dto.common.search.PermIdSearchCriteria", val
+                )]
+            else:
+                # we assume we just got a code
+                sreq["criteria"] = [_common_search(
+                    "as.dto.common.search.CodeSearchCriteria", val.upper()
+                )]
 
         elif key == "operator":
             sreq["operator"] = val.upper()