diff --git a/src/query/frontend/semantic/symbol_generator.cpp b/src/query/frontend/semantic/symbol_generator.cpp
index 2cfbee584..bf343e958 100644
--- a/src/query/frontend/semantic/symbol_generator.cpp
+++ b/src/query/frontend/semantic/symbol_generator.cpp
@@ -745,6 +745,14 @@ bool SymbolGenerator::PreVisit(PatternComprehension &pc) {
   return true;
 }
 
+bool SymbolGenerator::Visit(PrimitiveLiteral &primitive_literal) {
+  auto &scope = scopes_.back();
+  if (scope.in_merge && primitive_literal.value_.IsNull()) {
+    throw SemanticException("Cannot merge node or relationship entity because of null property value!");
+  }
+  return true;
+}
+
 bool SymbolGenerator::PostVisit(PatternComprehension & /*pc*/) { return true; }
 
 void SymbolGenerator::VisitWithIdentifiers(Expression *expr, const std::vector<Identifier *> &identifiers) {
diff --git a/src/query/frontend/semantic/symbol_generator.hpp b/src/query/frontend/semantic/symbol_generator.hpp
index e5b46fbfe..80b92be64 100644
--- a/src/query/frontend/semantic/symbol_generator.hpp
+++ b/src/query/frontend/semantic/symbol_generator.hpp
@@ -71,7 +71,7 @@ class SymbolGenerator : public HierarchicalTreeVisitor {
 
   // Expressions
   ReturnType Visit(Identifier &) override;
-  ReturnType Visit(PrimitiveLiteral &) override { return true; }
+  ReturnType Visit(PrimitiveLiteral &) override;
   bool PreVisit(MapLiteral &) override;
   bool PostVisit(MapLiteral &) override { return true; };
   ReturnType Visit(ParameterLookup &) override { return true; }
diff --git a/tests/gql_behave/tests/memgraph_V1/features/merge.feature b/tests/gql_behave/tests/memgraph_V1/features/merge.feature
index 5db5efd08..8cb28b6c6 100644
--- a/tests/gql_behave/tests/memgraph_V1/features/merge.feature
+++ b/tests/gql_behave/tests/memgraph_V1/features/merge.feature
@@ -187,7 +187,7 @@ Feature: Merge feature
         Then the result should be:
             | r    |
             | [:X] |
- 
+
     Scenario: Merge relationship test02
         Given an empty graph
         And having executed:
@@ -417,4 +417,19 @@ Feature: Merge feature
             | ({a: 1}) |
             | ({a: 2}) |
             | ({a: 3)) |
- 
+
+    Scenario: Merge node with null property error
+        Given an empty graph
+        When executing query:
+            """
+            MERGE ({id: null})
+            """
+        Then an error should be raised
+
+    Scenario: Merge edge with null property error
+        Given an empty graph
+        When executing query:
+            """
+            MERGE ()-[:TYPE {id:null}]->()
+            """
+        Then an error should be raised
diff --git a/tests/gql_behave/tests/memgraph_V1_on_disk/features/merge.feature b/tests/gql_behave/tests/memgraph_V1_on_disk/features/merge.feature
index 448f31d18..8cb28b6c6 100644
--- a/tests/gql_behave/tests/memgraph_V1_on_disk/features/merge.feature
+++ b/tests/gql_behave/tests/memgraph_V1_on_disk/features/merge.feature
@@ -417,3 +417,19 @@ Feature: Merge feature
             | ({a: 1}) |
             | ({a: 2}) |
             | ({a: 3)) |
+
+    Scenario: Merge node with null property error
+        Given an empty graph
+        When executing query:
+            """
+            MERGE ({id: null})
+            """
+        Then an error should be raised
+
+    Scenario: Merge edge with null property error
+        Given an empty graph
+        When executing query:
+            """
+            MERGE ()-[:TYPE {id:null}]->()
+            """
+        Then an error should be raised