diff --git a/src/opera/parser/yaml/constructor.py b/src/opera/parser/yaml/constructor.py
index 464b4fa..154526a 100644
--- a/src/opera/parser/yaml/constructor.py
+++ b/src/opera/parser/yaml/constructor.py
@@ -1,4 +1,5 @@
 from yaml.constructor import BaseConstructor, ConstructorError
+from collections import Counter
 
 from opera.parser.utils.location import Location
 
@@ -56,6 +57,14 @@ class Constructor(BaseConstructor):
         data = Node({}, self._pos(node))
         yield data
         data.value.update(self.construct_mapping(node))
+        counts = Counter(n.bare for n in data.value)
+        duplicates = [k for k, v in counts.items() if v > 1]
+        if duplicates:
+            raise ConstructorError(
+                None, None,
+                "Duplicate map names: {}".format(', '.join(duplicates)),
+                node.start_mark,
+            )
 
     def construct_undefined(self, node):
         raise ConstructorError(

diff --git a/tests/unit/opera/parser/yaml/test_constructor.py b/tests/unit/opera/parser/yaml/test_constructor.py
index cec2c01..ee88892 100644
--- a/tests/unit/opera/parser/yaml/test_constructor.py
+++ b/tests/unit/opera/parser/yaml/test_constructor.py
@@ -3,6 +3,7 @@ import math
 import pytest
 from yaml.error import Mark
 from yaml.nodes import MappingNode, ScalarNode, SequenceNode
+from yaml.constructor import ConstructorError
 
 from opera.parser.yaml.constructor import Constructor
 
@@ -138,3 +139,19 @@ class TestNull:
         assert res.loc.line == 9
         assert res.loc.column == 9
         assert res.loc.stream_name == "map"
+
+    def test_construct_map_duplicate(self):
+        mark = Mark(None, None, 8, 8, None, None)
+        children = [
+            (
+                ScalarNode("tag:yaml.org,2002:str", "node1", start_mark=mark),
+                ScalarNode("tag:yaml.org,2002:str", "node1", start_mark=mark),
+            ),
+            (
+                ScalarNode("tag:yaml.org,2002:str", "node1", start_mark=mark),
+                ScalarNode("tag:yaml.org,2002:str", "node1", start_mark=mark),
+            )
+        ]
+        node = MappingNode("tag:yaml.org,2002:map", children, start_mark=mark)
+        with pytest.raises(ConstructorError):
+            res, = Constructor("map").construct_yaml_map(node)

Duplicate node_template names
## Description
If a service template has 2 node template with same node template names defined, one of them is omitted, and template execution proceeds without error. According to section **3.1.3.1 Additional Requirements**
>  Duplicate Template names within a Service Template’s Topology Template SHALL be considered an error.
## Prerequisites
- `opera` installed
- `service.yaml` TOSCA Service Template containing 2 node templates with same name.
```
tosca_definitions_version: tosca_simple_yaml_1_3
topology_template:
  node_templates:
    node_1:
      type: tosca.nodes.SoftwareComponent   
    node_1:
      type: tosca.nodes.SoftwareComponent 
```

## Steps
- User runs deploy `opera deploy service.yaml`
## Current behavior
 - xOpera proceeds with deployment.
## Expected behavior
- xOpera returns a parser error.
tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_map_duplicate
tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_null[NULL] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_null[Null] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_null[null] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_null[~] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_null[] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_bool_true[True-True] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_bool_true[true-True] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_bool_true[TRUE-True] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_bool_true[False-False] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_bool_true[false-False] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_bool_true[FALSE-False] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[1-1] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0-0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[100-100] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[987654-987654] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[-100--100] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[+100-100] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[00005-5] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[054-54] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0o1-1] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0o0-0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0o100-64] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0o765-501] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0o0000015-13] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0x1-1] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0x0-0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0x100-256] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0x90abc-592572] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_int[0xAaBbFdE-179027934] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+.inf-inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-.inf--inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[.inf-inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+.Inf-inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-.Inf--inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[.Inf-inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+.INF-inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-.INF--inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[.INF-inf] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+.987-0.987] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-.765--0.765] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[.0987-0.0987] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+.6e-3-0.0006] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-.5E+2--50.0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[.4E32-4e+31] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+1.3-1.3] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-2.4--2.4] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[3.5-3.5] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+1.3E-3-0.0013] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-2.42e+5--242000.0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[3.5e7-35000000.0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[+13E-3-0.013] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[-2e+5--200000.0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_no_nan[3E7-30000000.0] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_nan_only[.nan] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_nan_only[.NaN] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_float_nan_only[.NAN] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[abc] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[1.2.3] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[NaN] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[INF] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[.NAn] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[ tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[\n] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[\t] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[1 tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[https://url] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[:bare] tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_str[multi\n tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_seq tests/unit/opera/parser/yaml/test_constructor.py::TestNull::test_construct_map