Index: tests/conftest.py
===================================================================
--- tests/conftest.py	(revision 4af65b0c210b58b2d4a18b02cef01cc3caa25a07)
+++ tests/conftest.py	(revision 182ba7dfd414277cbb293dd85fbd302f2266f776)
@@ -45,10 +45,7 @@
         # If no FlexOID yet, generate a draft ID now.
         if not getattr(self, "flexo_id", None):
-            domain_code = (
-                self.domain.domain if isinstance(self.domain, Domain) else "GEN"
-            )
             self.flexo_id = FlexOID.safe_generate(
-                domain=domain_code,
-                entity_type=EntityType.ITEM.value,     # 'I'
+                domain=self.default_domain_code,
+                entity_type=SingleChoiceQuestion.ENTITY_TYPE.value,     # 'I'
                 estate=EntityState.DRAFT.value,        # 'D'
                 text=self.text_seed or self.text,
@@ -58,5 +55,5 @@
     @classmethod
     def default(cls):
-        return cls(domain=Domain(domain="GEN"))
+        return cls()
 
     def to_dict(self):
@@ -80,10 +77,8 @@
     @classmethod
     def from_dict(cls, data):
-        obj = cls(domain=Domain(domain="GEN"),
-            text=data.get("text", ""),
+        obj = cls(text=data.get("text", ""),
             options=[AnswerOption.from_dict(o) for o in data.get("options", [])],
         )
         # restore FlexoEntity core fields
-        obj.domain = data.get("domain")
         if "flexo_id" in data:
             obj.flexo_id = FlexOID.parsed(data["flexo_id"])
@@ -96,6 +91,5 @@
 @pytest.fixture
 def sample_question():
-    q = SingleChoiceQuestion(domain=Domain.default(),
-                             text="What is 2 + 2?",
+    q = SingleChoiceQuestion(text="What is 2 + 2?",
                              options=[])
     q._update_fingerprint()
Index: tests/test_id_lifecycle.py
===================================================================
--- tests/test_id_lifecycle.py	(revision 4af65b0c210b58b2d4a18b02cef01cc3caa25a07)
+++ tests/test_id_lifecycle.py	(revision 182ba7dfd414277cbb293dd85fbd302f2266f776)
@@ -12,5 +12,4 @@
     assert q.flexo_id.version == 1
     assert FlexoEntity.verify_integrity(q)
-
 
 def test_approval_does_not_bump_version(sample_question):
Index: tests/test_id_stress.py
===================================================================
--- tests/test_id_stress.py	(revision 4af65b0c210b58b2d4a18b02cef01cc3caa25a07)
+++ tests/test_id_stress.py	(revision 182ba7dfd414277cbb293dd85fbd302f2266f776)
@@ -33,5 +33,5 @@
     ids = []
     for seed in seeds:
-        oid = FlexOID.safe_generate(domain.domain, entity_type.value, estate.value, seed, repo=repo)
+        oid = FlexOID.safe_generate(domain.domain_code, entity_type.value, estate.value, seed, repo=repo)
         assert isinstance(oid, FlexOID)
         ids.append(str(oid))
@@ -60,6 +60,6 @@
     text = "identical question text"
 
-    id1 = FlexOID.generate(domain.domain, entity_type.value, estate.value, text)
-    id2 = FlexOID.generate(domain.domain, entity_type.value, estate.value, text)
+    id1 = FlexOID.generate(domain.domain_code, entity_type.value, estate.value, text)
+    id2 = FlexOID.generate(domain.domain_code, entity_type.value, estate.value, text)
     # IDs must be identical because generation is deterministic
     assert id1 == id2
@@ -75,7 +75,7 @@
 #     seed = "reproducibility test seed"
 
-#     id1 = FlexOID.generate(domain.domain, entity_type.value, estate.value, seed)
+#     id1 = FlexOID.generate(domain.domain_code, entity_type.value, estate.value, seed)
 #     FlexOID._seen_hashes.clear()
-#     id2 = FlexOID.generate(domain.domain, entity_type.value, estate.value, seed)
+#     id2 = FlexOID.generate(domain.domain_code, entity_type.value, estate.value, seed)
 
 #     assert id1 == id2
