diff --git a/core/registrar/xml.py b/core/registrar/xml.py
index 519d8a54b19bf0eb4dd592270fbd58c676f1afc5..cc7b37eedfefe44cb9421c955bbfc5e48f6a368a 100644
--- a/core/registrar/xml.py
+++ b/core/registrar/xml.py
@@ -8,6 +8,7 @@ import logging
 import lxml.etree
 
 from .source import Source
+from .exceptions import RegistrationError
 
 
 logger = logging.getLogger(__name__)
@@ -29,6 +30,9 @@ class Parameter:
     namespaces: dict = field(default_factory=dict)
 
 
+class ParserError(RegistrationError):
+    pass
+
 def parse_metadata_schema(tree: lxml.etree._ElementTree, schema: dict, namespaces: dict=None) -> dict:
     out = {}
     for key, param in schema.items():
@@ -39,7 +43,10 @@ def parse_metadata_schema(tree: lxml.etree._ElementTree, schema: dict, namespace
                 for v in values
             ]
         else:
-            value = param.parser(values[0]) if param.parser else values[0]
+            try:
+                value = param.parser(values[0]) if param.parser else values[0]
+            except IndexError:
+                raise ParserError(f'Failed to fetch single value for parameter {key}')
 
         out[key] = value