diff --git a/org.eclipse.osbp.xtext.authorizationdsl.feature/feature.xml b/org.eclipse.osbp.xtext.authorizationdsl.feature/feature.xml
index 5778ad0..d4137c3 100644
--- a/org.eclipse.osbp.xtext.authorizationdsl.feature/feature.xml
+++ b/org.eclipse.osbp.xtext.authorizationdsl.feature/feature.xml
@@ -15,7 +15,7 @@
         label="%featureName"
         version="0.9.0.qualifier"
         provider-name="%providerName"
-		plugin="org.eclipse.osbp.xtext.authorizationdsl">
+		plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.xtext.authorizationdsl/src-gen/org/eclipse/osbp/xtext/authorizationdsl/parser/antlr/internal/InternalAuthorizationDSLLexer.java b/org.eclipse.osbp.xtext.authorizationdsl/src-gen/org/eclipse/osbp/xtext/authorizationdsl/parser/antlr/internal/InternalAuthorizationDSLLexer.java
index fcf9e9b..9b2a00c 100644
--- a/org.eclipse.osbp.xtext.authorizationdsl/src-gen/org/eclipse/osbp/xtext/authorizationdsl/parser/antlr/internal/InternalAuthorizationDSLLexer.java
+++ b/org.eclipse.osbp.xtext.authorizationdsl/src-gen/org/eclipse/osbp/xtext/authorizationdsl/parser/antlr/internal/InternalAuthorizationDSLLexer.java
@@ -4363,4 +4363,4 @@
     }
  
 
-}
\ No newline at end of file
+}
diff --git a/org.eclipse.osbp.xtext.authorizationdsl/src/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.xtend b/org.eclipse.osbp.xtext.authorizationdsl/src/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.xtend
index d07f9ac..fd2ee44 100644
--- a/org.eclipse.osbp.xtext.authorizationdsl/src/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.xtend
+++ b/org.eclipse.osbp.xtext.authorizationdsl/src/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.xtend
@@ -36,8 +36,8 @@
 	
 	@Check
 	def checkSecurityLicensed(Role role) {
-		if (IUserAccessService.ADMINISTRATOR.equals(role.name)) {
-			error('''The role '«IUserAccessService.ADMINISTRATOR»' is the already existing default role and its explicit definition is not allowed!''', role, null)
+		if (IUserAccessService.NAME_ADMINISTRATOR.equals(role.name)) {
+			error('''The role '«IUserAccessService.NAME_ADMINISTRATOR»' is the already existing default role and its explicit definition is not allowed!''', role, null)
 		} else if(delegate !== null && !delegate.validateCommercial("authorization", "net.osbee.organization.permissions")) {
 			info('''Authorization is needed and not yet licensed. License Authorization at www.osbee.net''', role, null)
 		}
diff --git a/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/scoping/AuthorizationDSLScopeProvider.java b/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/scoping/AuthorizationDSLScopeProvider.java
index 7f0c2c1..4f623da 100644
--- a/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/scoping/AuthorizationDSLScopeProvider.java
+++ b/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/scoping/AuthorizationDSLScopeProvider.java
@@ -210,7 +210,7 @@
       EList<BlipItem> _items = process.getItems();
       for (final BlipItem item : _items) {
         if ((item instanceof BlipUserTask)) {
-          result.add(EObjectDescription.create(item.getName(), item));
+          result.add(EObjectDescription.create(((BlipUserTask)item).getName(), item));
         }
       }
     }
diff --git a/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.java b/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.java
index 7b2742f..4d49798 100644
--- a/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.java
+++ b/org.eclipse.osbp.xtext.authorizationdsl/xtend-gen/org/eclipse/osbp/xtext/authorizationdsl/validation/AuthorizationDSLValidator.java
@@ -38,11 +38,11 @@
   
   @Check
   public void checkSecurityLicensed(final Role role) {
-    boolean _equals = IUserAccessService.ADMINISTRATOR.equals(role.getName());
+    boolean _equals = IUserAccessService.NAME_ADMINISTRATOR.equals(role.getName());
     if (_equals) {
       StringConcatenation _builder = new StringConcatenation();
       _builder.append("The role \'");
-      _builder.append(IUserAccessService.ADMINISTRATOR);
+      _builder.append(IUserAccessService.NAME_ADMINISTRATOR);
       _builder.append("\' is the already existing default role and its explicit definition is not allowed!");
       this.error(_builder.toString(), role, null);
     } else {
