diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8eeed54fc829649a58a14cf60fbf85a48b0ae48a..ff41346163920f345ea89614f949f6a7a208b188 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Added ###
 * 'transform' sections can be added to a CFood to apply functions to values stored in variables.
 * default transform functions: submatch, split and replace.
+* `*` can now be used as a wildcard in the identifiables parameter file to denote
+  that any Record may reference the identified one.
 
 ### Changed ###
 - If the `parents` key is used in a cfood at a lower level for a Record that
diff --git a/src/caoscrawler/identifiable_adapters.py b/src/caoscrawler/identifiable_adapters.py
index ceaa3bfe1f1f040fc0099d17e14a0c6797804ac4..d35477dde03fa437d03b78fb099ff129ab6bf9bb 100644
--- a/src/caoscrawler/identifiable_adapters.py
+++ b/src/caoscrawler/identifiable_adapters.py
@@ -219,18 +219,25 @@ identifiabel, identifiable and identified record) for a Record.
                 # separate class too
                 if prop.name.lower() == "is_referenced_by":
                     for givenrt in prop.value:
-                        rt_and_children = get_children_of_rt(givenrt)
                         found = False
-                        for rtname in rt_and_children:
-                            if (id(record) in referencing_entities
-                                    and rtname in referencing_entities[id(record)]):
-                                identifiable_backrefs.extend(
-                                    referencing_entities[id(record)][rtname])
+                        if givenrt == "*":
+                            if id(record) not in referencing_entities:
+                                continue
+                            for rt, rec in referencing_entities[id(record)].items():
+                                identifiable_backrefs.extend(rec)
                                 found = True
+                        else:
+                            rt_and_children = get_children_of_rt(givenrt)
+                            for rtname in rt_and_children:
+                                if (id(record) in referencing_entities
+                                        and (rtname in referencing_entities[id(record)])):
+                                    identifiable_backrefs.extend(
+                                        referencing_entities[id(record)][rtname])
+                                    found = True
                         if not found:
                             # TODO: is this the appropriate error?
                             raise NotImplementedError(
-                                f"The following record is missing an identifying property:"
+                                f"The following record is missing an identifying property:\n"
                                 f"RECORD\n{record}\nIdentifying PROPERTY\n{prop.name}"
                             )
                     continue
diff --git a/src/doc/concepts.rst b/src/doc/concepts.rst
index 0b15f9b5d9aebefc2137b234ac4a9440b84906f5..b10deccdca1a2adf60ebcbac930bc797875724ff 100644
--- a/src/doc/concepts.rst
+++ b/src/doc/concepts.rst
@@ -85,7 +85,9 @@ we can check whether a Record with the parent "Project" is referencing the "Expe
 Record. If that is the case, this reference is part of the identifiable for the "Experiment"
 Record. Note, that if there are multiple Records with the appropriate parent (e.g.
 multiple "Project" Records in the above example) it will be required that all of them
-reference the object to be identified.
+reference the object to be identified. You can also use the wildcard "*" as
+RecordType name in the configuration which will only require, that ANY Record
+references the Record at hand.
 
 
 Identified Records
diff --git a/unittests/test_identifiable_adapters.py b/unittests/test_identifiable_adapters.py
index 268b9800ddf1ef1688386f394ec1c6c7eb3e3912..7759fa55ce37e1c30ff9092eac3260ca80348bca 100644
--- a/unittests/test_identifiable_adapters.py
+++ b/unittests/test_identifiable_adapters.py
@@ -133,6 +133,22 @@ def test_non_default_name():
     assert identifiable.name is None
 
 
+def test_wildcard_ref():
+    ident = CaosDBIdentifiableAdapter()
+    ident.register_identifiable(
+        "Person", db.RecordType()
+        .add_parent(name="Person")
+        .add_property(name="is_referenced_by", value=["*"]))
+    rec = (db.Record(name="don't touch it").add_parent("Person")
+           .add_property(name="last_name", value='Tom'))
+    identifiable = ident.get_identifiable(rec,
+                                          referencing_entities={
+                                              id(rec):
+                                              {'A': [db.Record(id=1).add_parent("A")]}}
+                                          )
+    assert identifiable.backrefs[0].id == 1
+
+
 def test_convert_value():
     # test that string representation of objects stay unchanged. No stripping or so.
     class A():