diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index 15722a6..61f739b 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -25,15 +25,25 @@
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.action</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.authorization</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.blip</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.chart</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.cube</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.datainterchange</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.dialog</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.entitymock</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.functionlibrary</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.menu</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.message</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.organization</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.perspective</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.report</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.signal</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.statemachine</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.strategy</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.table</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.topology</jenkins.build.dependency>
         </jenkins.build.dependencies>
 </jenkins>
diff --git a/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
index 4582269..5fe8fba 100644
--- a/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
@@ -19,36 +19,44 @@
  org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.bpmn2;bundle-version="1.0.0",
  org.eclipse.osbp.bpmn2.ecore;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.perspective;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.blip;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.entitymock;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.menu;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.strategy;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.model;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.persistence.jpa;bundle-version="2.6.1",
+ org.eclipse.osbp.ui.api;bundle-version="0.9.0",
+ org.eclipse.osgi.services;bundle-version="3.5.100",
  org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.datatype.xtext;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.statemachine;bundle-version="0.9.0",
  org.eclipse.osbp.ecview.dsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.dsl.lib;bundle-version="0.9.0",
+ org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.authorizationdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.messagedsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamartdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.table;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.chart;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.reportdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.topologydsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.entitymock;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.strategy;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.dialogdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.perspective;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.blip;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.organizationdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.statemachine;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.menu;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.signal;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ecview.core.common.model;bundle-version="[0.9.0,0.10.0)"
+ org.eclipse.osbp.preferences;bundle-version="0.9.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.validation.constraints,
  org.apache.commons.lang3;version="3.4.0",
  org.eclipse.e4.core.services.translation,
- org.eclipse.osbp.preferences;version="0.9.0",
- org.eclipse.osbp.ui.api.metadata;version="0.9.0",
- org.eclipse.osbp.ui.api.perspective;version="0.9.0",
- org.eclipse.osbp.xtext.blip;version="0.9.0",
- org.eclipse.osbp.xtext.i18n;version="0.9.0",
- org.eclipse.osbp.xtext.perspective;version="0.9.0",
- org.osgi.service.component;version="1.2.0",
- org.osgi.service.component.annotations,
  org.slf4j;resolution:=optional
 Export-Package: org.eclipse.osbp.dsl.metadata.service
 Service-Component: OSGI-INF/org.eclipse.osbp.dsl.metadata.service.DSLBuilderParticipant.xml
diff --git a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
index aa56d41..d0bd2bb 100644
--- a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
+++ b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
@@ -23,8 +23,8 @@
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Hashtable;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -45,14 +45,14 @@
 import org.eclipse.osbp.dsl.semantic.dto.LDto;
 import org.eclipse.osbp.dsl.semantic.entity.LEntity;
 import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
-import org.eclipse.osbp.ecview.core.common.context.IViewContext;
-import org.eclipse.osbp.ecview.core.common.extender.IECViewProviderService;
-import org.eclipse.osbp.ecview.semantic.uimodel.UiModel;
-import org.eclipse.osbp.ecview.semantic.uimodel.UiView;
+import org.eclipse.osbp.ecview.semantic.uimodel.UiIDEView;
+import org.eclipse.osbp.ecview.semantic.uimodel.UiModelPackage;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.extender.IExtenderConstants;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider;
+import org.eclipse.osbp.xtext.action.ActionPackage;
+import org.eclipse.osbp.xtext.action.ActionToolbar;
 import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationPackage;
 import org.eclipse.osbp.xtext.authorizationdsl.Role;
 import org.eclipse.osbp.xtext.builder.metadata.services.AbstractBuilderParticipant;
@@ -70,6 +70,11 @@
 import org.eclipse.osbp.xtext.dialogdsl.Dialog;
 import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
 import org.eclipse.osbp.xtext.dialogdsl.DialogPackage;
+import org.eclipse.osbp.xtext.dialogdsl.mapper.AutowireUiFactory;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDialogGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDialogHook;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
 import org.eclipse.osbp.xtext.i18n.I18NKeyGenerator;
 import org.eclipse.osbp.xtext.organizationdsl.Organization;
 import org.eclipse.osbp.xtext.perspective.Perspective;
@@ -89,14 +94,16 @@
 import org.eclipse.osbp.xtext.topologydsl.Topology;
 import org.eclipse.osbp.xtext.topologydsl.TopologyDSLPackage;
 import org.eclipse.osbp.xtext.topologydsl.TopologyPackage;
+import org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider;
+import org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor;
+import org.eclipse.persistence.internal.jpa.deployment.SEPersistenceUnitInfo;
+import org.eclipse.persistence.jpa.Archive;
+import org.eclipse.persistence.jpa.PersistenceProvider;
 import org.eclipse.xtext.common.types.JvmDeclaredType;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.util.Pair;
 import org.eclipse.xtext.util.Tuples;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.component.ComponentContext;
@@ -128,6 +135,12 @@
 
 	/** The dsl bundles. */
 	private Map<String, List<Bundle>> dslBundles = new HashMap<>();
+	
+	/** The entity class loaders. */
+	private Map<String, ClassLoader> entityClassLoaders = new HashMap<>();
+
+	/** The persistence units. */
+	private Map<String, SEPersistenceUnitInfo> persistenceUnitInfos = new HashMap<>();
 
 	/** The used keys. */
 	private Map<Bundle, List<String>> usedKeys = new HashMap<>();
@@ -139,13 +152,13 @@
 	private List<Bundle> masterBundles = new ArrayList<>();
 	
 	/** The translations. */
-	private HashMap<String, Properties> translations = new HashMap<>();
+	private Map<String, Properties> translations = new HashMap<>();
 	/** The translations source. */
-	private HashMap<String, Properties> translationSource = new HashMap<>();
+	private Map<String, Properties> translationSource = new HashMap<>();
 	/** The cache for nearest localeTag to a localeString */
-	private HashMap<String, String> localeCache = new HashMap<>();
+	private Map<String, String> localeCache = new HashMap<>();
 	/** to reduce regex matching */
-	private HashMap<String, String> keyCache = new HashMap<>();
+	private Map<String, String> keyCache = new HashMap<>();
 
 	private boolean osbee = false;
 
@@ -293,12 +306,57 @@
 						if (!scannedBundles.contains(suspect)) {
 							scanTranslationBundles(suspect);
 						}
+						if("entity".equals(extension)) {
+							extractPersistenceUnits(wiring);
+						}
 					}
 				}
 			}
 		}
 	}
 
+	private void extractPersistenceUnits(BundleWiring wiring) {
+		List<URL> pUnits = wiring.findEntries("/", "persistence.xml", BundleWiring.LISTRESOURCES_RECURSE);
+		for (URL pUnit : pUnits) {
+			SEPersistenceUnitInfo persistenceUnitInfo = null;
+			Set<Archive> pars;
+			pars = PersistenceUnitProcessor.findPersistenceArchives(wiring.getClassLoader(), pUnit.getPath());
+			try {
+				for (Archive archive : pars) {
+					Iterator<SEPersistenceUnitInfo> persistenceUnits = PersistenceUnitProcessor.getPersistenceUnits(archive, wiring.getClassLoader()).iterator();
+					while(persistenceUnits.hasNext()) {
+						persistenceUnitInfo = persistenceUnits.next();
+						if (persistenceUnitInfo != null && isPersistenceProviderSupported(persistenceUnitInfo.getPersistenceProviderClassName())) {
+							persistenceUnitInfos.put(persistenceUnitInfo.getPersistenceUnitName(), persistenceUnitInfo);
+							for(String clz:persistenceUnitInfo.getManagedClassNames()) {
+								entityClassLoaders.put(getPackageName(clz), wiring.getClassLoader());
+							}
+							
+						}
+					}
+				}
+			} finally {
+				for (Archive archive : pars) {
+					archive.close();
+				}
+			}
+		}
+	}
+
+	public static String getPackageName(String className) {
+		int lastDot = className.lastIndexOf('.');
+		if (lastDot == -1) {
+			return "";
+		}
+		return className.substring(0, lastDot);
+	}
+
+	private boolean isPersistenceProviderSupported(String providerClassName) {
+		return (providerClassName == null || providerClassName.equals("")
+				|| providerClassName.equals(EntityManagerFactoryProvider.class.getName())
+				|| providerClassName.equals(PersistenceProvider.class.getName()));
+	}
+	
 	/**
 	 * Load translations from a bundle. Tries to find an i18n directory with
 	 * different language properties.
@@ -510,6 +568,15 @@
 	 * Provided as an OSGi service to returnmodels for the given qualified name.
 	 */
 	public class DSLMetadataService implements IDSLMetadataService {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#reloadModel(java.lang.String)
+		 */
+		@Override
+		public void unloadModel(String extension) {
+			metadataBuilderService.unloadResource(extension);
+		}
+
 		/*
 		 * (non-Javadoc)
 		 * 
@@ -553,14 +620,21 @@
 		 */
 		@Override
 		public Class<?> getClass(EObject eObject, String extension) {
-			String className = getClassName(eObject, "");
+			return getClass(getClassName(eObject, ""), extension);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getClass(java.lang.String, java.lang.String)
+		 */
+		@Override
+		public Class<?> getClass(String fqn, String extension) {
 			if (dslBundles.containsKey(extension)) {
 				for (Bundle bundle : dslBundles.get(extension)) {
 					BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
 					ClassLoader classLoader = bundleWiring.getClassLoader();
 					Class<?> clz = null;
 					try {
-						clz = classLoader.loadClass(className);
+						clz = classLoader.loadClass(fqn);
 					} catch (ClassNotFoundException e) {
 						// nothing to do
 					}
@@ -569,10 +643,10 @@
 					}
 				}
 			}
-			log.error("class {} could not be found for extension {}", className, extension);
+			log.error("class {} could not be found for extension {}", fqn, extension);
 			return null;
 		}
-
+		
 		/*
 		 * (non-Javadoc)
 		 * 
@@ -582,7 +656,14 @@
 		 */
 		@Override
 		public Object getClassInstance(EObject eObject, String extension) {
-			Class<?> clz = getClass(eObject, extension);
+			return getClassInstance(getClass(eObject, extension), extension);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getClassInstance(java.lang.Class, java.lang.String)
+		 */
+		@Override
+		public Object getClassInstance(Class<?> clz, String extension) {
 			try {
 				if (clz != null) {
 					return clz.newInstance();
@@ -590,12 +671,11 @@
 			} catch (InstantiationException | IllegalAccessException e) {
 				log.error("class {} could not be instantiated", clz.getCanonicalName());
 				if (e.getCause() != null) {
-					log.error("because " + e.getCause());
+					log.error("because {}", e.getCause());
 				}
 			}
 			return null;
 		}
-
 		/**
 		 * Gets the class URI. As more than one bundle could carry a model
 		 * instance, we must try to load the requested class to be sure to have
@@ -773,13 +853,18 @@
 		 * (java.lang.String, java.lang.String)
 		 */
 		@Override
-		public Map<String, String> getAllTypeNames(String localeTag, String typeName) {
-			HashMap<String, String> subTypesNames = new HashMap<>();
-			subTypesNames.put(translate(localeTag, typeName.substring(typeName.lastIndexOf('.') + 1)), typeName);
-			JvmDeclaredType type = (JvmDeclaredType) metadataBuilderService.getTypeProvider().findTypeByName(typeName);
-			Set<JvmDeclaredType> subTypes = metadataBuilderService.findSubTypes(type);
+		public Map<String, Object> getAllSubtypes(String localeTag, Class<?> type) {
+			LinkedHashMap<String, Object> subTypesNames = new LinkedHashMap<>();
+			subTypesNames.put(translate(localeTag, type.getSimpleName()), type);
+			JvmDeclaredType jvmType = (JvmDeclaredType) metadataBuilderService.getTypeProvider().findTypeByName(type.getCanonicalName());
+			Set<JvmDeclaredType> subTypes = metadataBuilderService.findSubTypes(jvmType);
 			for (JvmDeclaredType subType : subTypes) {
-				subTypesNames.put(translate(localeTag, subType.getSimpleName()), subType.getQualifiedName());
+				try {
+					Class<?> subtypeClass = createType(subType.getQualifiedName());
+					subTypesNames.put(translate(localeTag, subType.getSimpleName()), subtypeClass);
+				} catch (ClassNotFoundException e) {
+					log.error("{}", e);
+				}
 			}
 			return subTypesNames;
 		}
@@ -869,6 +954,31 @@
 		public boolean isOsbee() {
 			return osbee;
 		}
+
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getClassLoader(java.lang.String)
+		 */
+		@Override
+		public ClassLoader getClassLoader(String className) {
+			for(Entry<String, ClassLoader> entityBundle:entityClassLoaders.entrySet()) {
+				if(className.startsWith(entityBundle.getKey())) {
+					return entityBundle.getValue();
+				}
+			}
+			return null;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getPersistenceUnitInfo(java.lang.String)
+		 */
+		@Override
+		public Object getPersistenceUnitInfo(String persistenceUnitName) {
+			if(persistenceUnitInfos.containsKey(persistenceUnitName)) {
+				return persistenceUnitInfos.get(persistenceUnitName);
+			}
+			return null;
+		}
 	}
 
 	/**
@@ -898,9 +1008,10 @@
 				return IPerspectiveProvider.PerspectiveViewType.TABLE;
 			} else if (pkg == TopologyDSLPackage.eINSTANCE) {
 				return IPerspectiveProvider.PerspectiveViewType.TOPOLOGY;
-			}
-			else if (pkg == SignalDSLPackage.eINSTANCE) {
+			} else if (pkg == SignalDSLPackage.eINSTANCE) {
 				return IPerspectiveProvider.PerspectiveViewType.SIGNAL;
+			} else if (pkg == FunctionLibraryDSLPackage.eINSTANCE) {
+				return IPerspectiveProvider.PerspectiveViewType.FUNCTIONLIBRARY;
 			}
 			throw new IllegalArgumentException(
 					IDSLMetadataService.ThrowableMessages.NAMING_LOGIC_NOT_REGISTERD + eObject);
@@ -924,8 +1035,12 @@
 				return getAuthorizationFQN(eObject);
 			} else if (eObject instanceof Dialog) {
 				return getDialogFQN(eObject);
+			} else if (eObject instanceof UiIDEView) {
+				return getUiIdeFQN(eObject);
 			} else if (eObject instanceof LDto) {
 				return getDtoFQN(eObject);
+			} else if (eObject instanceof LEntity) {
+				return getEntityFQN(eObject);
 			} else if (eObject instanceof Report) {
 				return getReportFQN(eObject);
 			} else if (eObject instanceof Table) {
@@ -936,6 +1051,12 @@
 				return getDatamartFQN(eObject);
 			} else if (eObject instanceof SignalDefinition) {
 				return getSignalFQN(eObject);
+			} else if (eObject instanceof ActionToolbar) {
+				return getActionFQN(eObject);
+			} else if (eObject instanceof FunctionLibraryDialogGroup) {
+				return getDialogGroupFQN(eObject);
+			} else if (eObject instanceof FunctionLibraryDialogHook) {
+				return getDialogHookFQN(eObject);
 			}
 			throw new IllegalArgumentException(
 					IDSLMetadataService.ThrowableMessages.NAMING_LOGIC_NOT_REGISTERD + eObject);
@@ -975,6 +1096,8 @@
 				return getDataInterchangeClassName(eObject);
 			} else if (eObject instanceof SignalPackage) {
 				return getSignalClassName(eObject);
+			} else if (eObject instanceof ActionToolbar) {
+				return getActionToolbarClassName(eObject);
 			}
 			throw new IllegalArgumentException(
 					IDSLMetadataService.ThrowableMessages.NAMING_LOGIC_NOT_REGISTERD + eObject);
@@ -1091,6 +1214,22 @@
 			DialogPackage pkg = (DialogPackage) dialog.eContainer();
 			return pkg.getName() + "." + dialog.getName();
 		}
+		
+		/**
+		 * Gets the uiModel FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the dialog FQN
+		 */
+		private static String getUiIdeFQN(EObject eObject) {
+			UiIDEView ui = (UiIDEView) eObject;
+			if (ui == null) {
+				return "";
+			}
+			UiModelPackage pkg = (UiModelPackage) ui.eContainer();
+			return pkg.getName() + "." + ui.getName();
+		}
 
 		private static String getDatainterchangeFQN(EObject eObject) {
 			DataInterchangePackage data = (DataInterchangePackage) eObject;
@@ -1149,6 +1288,54 @@
 		}
 		
 		/**
+		 * Gets the action FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the action FQN
+		 */
+		private static String getActionFQN(EObject eObject) {
+			ActionToolbar actionToolbar = (ActionToolbar) eObject;
+			if (actionToolbar == null) {
+				return "";
+			}
+			ActionPackage pkg = (ActionPackage) actionToolbar.eContainer();
+			return pkg.getName() + "." + actionToolbar.getName();
+		}
+		
+		/**
+		 * Gets the functionLibraryInitializationGroup FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the action FQN
+		 */
+		private static String getDialogGroupFQN(EObject eObject) {
+			FunctionLibraryDialogGroup functionLibraryDialogGroup = (FunctionLibraryDialogGroup) eObject;
+			if (functionLibraryDialogGroup == null) {
+				return "";
+			}
+			FunctionLibraryPackage pkg = (FunctionLibraryPackage) functionLibraryDialogGroup.eContainer();
+			return pkg.getName() + "." + functionLibraryDialogGroup.getName();
+		}
+		
+		/**
+		 * Gets the functionLibraryInitialization FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the action FQN
+		 */
+		private static String getDialogHookFQN(EObject eObject) {
+			FunctionLibraryDialogHook functionLibraryDialogHook = (FunctionLibraryDialogHook) eObject;
+			if (functionLibraryDialogHook == null) {
+				return "";
+			}
+			FunctionLibraryPackage pkg = (FunctionLibraryPackage) functionLibraryDialogHook.eContainer().eContainer();
+			return pkg.getName() + "." + functionLibraryDialogHook.getName();
+		}
+		
+		/**
 		 * Gets the watcher FQN.
 		 *
 		 * @param eObject
@@ -1223,6 +1410,16 @@
 		}
 
 		/**
+		 * Gets the toolbar class name.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the toolbar class name
+		 */
+		private static String getActionToolbarClassName(EObject eObject) {
+			return getActionFQN(eObject) + "Toolbar";
+		}
+		/**
 		 * Gets the report class name.
 		 *
 		 * @param eObject
@@ -1302,18 +1499,7 @@
 			if (dialog == null) {
 				return "";
 			}
-			DialogPackage pkg = (DialogPackage) dialog.eContainer();
-			String ecviewId = null;
-			if (dialog.isAutowire()) {
-				ecviewId = pkg.getName() + ".autobinded." + dialog.getName();
-			} else if (dialog.getUiView() != null) {
-				UiView ui = dialog.getUiView();
-				UiModel model = (UiModel) ui.eContainer();
-				ecviewId = model.getPackageName() + "." + ui.getName();
-			} else {
-				ecviewId = pkg.getName() + "." + dialog.getName();
-			}
-			return ecviewId;
+			return AutowireUiFactory.getECViewPackage(dialog) +"."+ AutowireUiFactory.getECViewName(dialog);
 		}
 	}
 
diff --git a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
index 600550d..332a082 100644
--- a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
+++ b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
@@ -17,6 +17,8 @@
 import org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammarBundleSpaceSetup;
 import org.eclipse.osbp.dsl.dto.xtext.DtoGrammarBundleSpaceSetup;
 import org.eclipse.osbp.dsl.entity.xtext.EntityGrammarBundleSpaceSetup;
+import org.eclipse.osbp.ecview.dsl.UIGrammarBundleSpaceStandaloneSetup;
+import org.eclipse.osbp.ecview.uisemantics.UISemanticsGrammarBundleSpaceStandaloneSetup;
 import org.eclipse.osbp.xtext.action.ActionDSLBundleSpaceStandaloneSetup;
 import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationDSLBundleSpaceStandaloneSetup;
 import org.eclipse.osbp.xtext.blip.BlipDSLBundleSpaceStandaloneSetup;
@@ -57,6 +59,8 @@
 		DatatypeGrammarBundleSpaceSetup.doSetup();
 		DatamartDSLBundleSpaceStandaloneSetup.doSetup();
 		DialogDSLBundleSpaceStandaloneSetup.doSetup();
+		UIGrammarBundleSpaceStandaloneSetup.doSetup();
+		UISemanticsGrammarBundleSpaceStandaloneSetup.doSetup();
 		DtoGrammarBundleSpaceSetup.doSetup();
 		EntityGrammarBundleSpaceSetup.doSetup();
 		EntityMockDSLBundleSpaceStandaloneSetup.doSetup();
