diff --git a/CHANGELOG.md b/CHANGELOG.md
index a744c76cc738e76a01ddfe886d2f9a4792b10b1c..5fca5f27589581a503cec2c90a6334e4c9fe1201 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 * `FIND ENTITY <ID> is broken`.
   [linkahead-server#323](https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/323)
+* Unknown Server Error when inserting an Entity.
+  [linkahead-mariadbbackend](https://gitlab.indiscale.com/caosdb/src/caosdb-mysqlbackend/-/issues/48)
 
 ### Security
 
diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java
index 18c994e454a75bb17ea1e69777778d9592e18eab..5383de9b8271979e46053d7713d70973fba9eb46 100644
--- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java
+++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java
@@ -107,20 +107,15 @@ public class DatabaseUtils {
       final List<Property> stage1Inserts,
       Deque<EntityID> replacementIds,
       EntityInterface entity) {
-    Map<String, EntityInterface> replacements = new HashMap<>();
     for (final Property p : stage1Inserts) {
       if (p instanceof Replacement) {
         if (!p.hasId() || p.getId().isTemporary()) {
           EntityID replacementId = replacementIds.pop();
-          replacements.put(replacementId.toString(), p);
           ((Replacement) p).setReplacementId(replacementId);
         }
       }
-    }
-
-    for (final Property p : stage1Inserts) {
       if (p.hasProperties()) {
-        if (p instanceof Replacement && ((Replacement) p).isState2Replacement()) {
+        if (p instanceof Replacement && ((Replacement) p).isStage2Replacement()) {
           stage2Inserts.add(((Replacement) p).replacement);
         }
         for (Property subP : p.getProperties()) {
@@ -148,7 +143,6 @@ public class DatabaseUtils {
       subP.setDomain(p);
       if (subP.hasProperties()) {
         Replacement r = new Replacement(subP);
-        r.replacement.setDomain(p);
         r.setStage2Replacement(true);
         stage1Inserts.add(r);
         processSubPropertiesStage1(stage1Inserts, r);
diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java
index fbe2f57e1cdc7868dac239313f7579011e23e868..c672c0eae79bc2209ce465a01b8947c64b58dfa5 100644
--- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java
+++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java
@@ -41,7 +41,7 @@ enum ReplacementStatus implements StatementStatusInterface {
 public class Replacement extends Property {
 
   public Property replacement;
-  private boolean state2Replacement;
+  private boolean stage2Replacement;
 
   @Override
   public EntityID getId() {
@@ -61,7 +61,7 @@ public class Replacement extends Property {
     super(p);
     replacement = new Property(new RetrieveEntity());
 
-    replacement.setDomain(p);
+    replacement.setDomain(p.getDomainEntity());
     replacement.setId(new EntityID());
     replacement.setStatementStatus(ReplacementStatus.REPLACEMENT);
     replacement.setValue(new ReferenceValue(p.getId()));
@@ -69,10 +69,10 @@ public class Replacement extends Property {
   }
 
   public void setStage2Replacement(boolean t) {
-    this.state2Replacement = t;
+    this.stage2Replacement = t;
   }
 
-  public boolean isState2Replacement() {
-    return state2Replacement;
+  public boolean isStage2Replacement() {
+    return stage2Replacement;
   }
 }