diff --git a/validation/src/main/java/org/apache/tamaya/validation/ValidationCheck.java b/validation/src/main/java/org/apache/tamaya/validation/ValidationCheck.java
index d4ad293..fbb31ae 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/ValidationCheck.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/ValidationCheck.java
@@ -192,11 +192,11 @@
         }
         if(source instanceof ConfigPropertySpec){
             ConfigPropertySpec pspec = (ConfigPropertySpec) source;
-            return result + ": " + pspec.name() + " (property)"+finalMessage + '\n';
+            return result + ": " + pspec.key() + " (property)"+finalMessage + '\n';
         }
         else if(source instanceof ConfigAreaSpec){
             ConfigAreaSpec gspec = (ConfigAreaSpec) source;
-            return result + ": " + gspec.path() + " (group)"+finalMessage + '\n';
+            return result + ": " + gspec.basePaths() + " (group)"+finalMessage + '\n';
         }
         return result + ": " + source + ")"+finalMessage + '\n';
     }
diff --git a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationDocumentationReader.java b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationDocumentationReader.java
index 67b2979..7875fa7 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationDocumentationReader.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigValidationDocumentationReader.java
@@ -23,7 +23,7 @@
 import org.apache.tamaya.Configuration;
 import org.apache.tamaya.doc.ConfigDocumenter;
 import org.apache.tamaya.doc.DocumentedArea;
-import org.apache.tamaya.doc.DocumentedConfiguration;
+import org.apache.tamaya.doc.ConfigurationDocumentation;
 import org.apache.tamaya.doc.DocumentedProperty;
 import org.apache.tamaya.spi.ClassloaderAware;
 import org.apache.tamaya.spi.ServiceContextManager;
@@ -59,7 +59,7 @@
      */
     public List<ConfigValidator> loadValidations(ClassLoader classLoader) {
         List<ConfigValidator> result = new ArrayList<>();
-        DocumentedConfiguration configDoc = ConfigDocumenter.getInstance(classLoader).getDocumentation();
+        ConfigurationDocumentation configDoc = ConfigDocumenter.getInstance(classLoader).getDocumentation();
         for(DocumentedArea docArea: configDoc.getAllAreasSorted()){
             loadValidations(docArea, result);
         }
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java b/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java
index b5f8efb..66a68ba 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java
@@ -49,7 +49,7 @@
      * @param documentedProperty the property docs, not null.
      */
     public PropertyValidator(DocumentedProperty documentedProperty) {
-        this.name = Objects.requireNonNull(documentedProperty.getName());
+        this.name = Objects.requireNonNull(documentedProperty.getKeys());
         this.description = documentedProperty.getDescription();
         this.required = documentedProperty.isRequired();
         this.owner = documentedProperty;
