diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.classpath b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.project b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.project
new file mode 100644
index 000000000..b84825244
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.project
@@ -0,0 +1,28 @@
+
+
+ org.eclipse.gemoc.xdsmlframework.extensions.kermeta3
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.settings/org.eclipse.jdt.core.prefs b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/META-INF/MANIFEST.MF b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..99338ce4c
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Gemoc extension for Kermeta3
+Bundle-SymbolicName: org.eclipse.gemoc.xdsmlframework.extensions.kermeta3;singleton:=true
+Bundle-Version: 4.0.0.qualifier
+Automatic-Module-Name: org.eclipse.gemoc.xdsmlframework.extension.kermeta3
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.resources,
+ org.eclipse.equinox.registry,
+ org.eclipse.gemoc.dsl;bundle-version="3.0.0",
+ org.eclipse.gemoc.xdsmlframework.api;bundle-version="4.0.0",
+ org.eclipse.jdt.core;bundle-version="3.14.0"
+Export-Package: org.eclipse.gemoc.xdsmlframework.extensions.kermeta3
diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/build.properties b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/build.properties
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/plugin.xml b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/plugin.xml
new file mode 100644
index 000000000..11eb59f39
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/plugin.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/pom.xml b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/pom.xml
new file mode 100644
index 000000000..3ed7a431e
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/pom.xml
@@ -0,0 +1,25 @@
+
+
+
+
+ 4.0.0
+
+
+ ../..
+ org.eclipse.gemoc.modeldebugging.xdsmlframework
+ org.eclipse.gemoc.modeldebugging.xdsmlframework.root
+ 4.0.0-SNAPSHOT
+
+
+ org.eclipse.gemoc.xdsmlframework.extensions.kermeta3
+ eclipse-plugin
+
\ No newline at end of file
diff --git a/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3Rule.java b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3Rule.java
new file mode 100644
index 000000000..830f16eb2
--- /dev/null
+++ b/framework/xdsml_framework/plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3/src/org/eclipse/gemoc/xdsmlframework/extensions/kermeta3/Kermeta3Rule.java
@@ -0,0 +1,95 @@
+package org.eclipse.gemoc.xdsmlframework.extensions.kermeta3;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.gemoc.dsl.Dsl;
+import org.eclipse.gemoc.dsl.Entry;
+import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.IRule;
+import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Message;
+import org.eclipse.gemoc.xdsmlframework.api.extensions.metaprog.Severity;
+import org.eclipse.jdt.core.IAnnotation;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+
+public class Kermeta3Rule implements IRule{
+
+ boolean tagTests;
+
+ public Kermeta3Rule(boolean performsTagTest) {
+ tagTests = performsTagTest;
+ }
+
+ @Override
+ public Message execute(Dsl dsl) {
+ ArrayList entriesNames = new ArrayList();
+
+ for (Entry e : dsl.getEntries()) {
+ entriesNames.add(e.getKey());
+ }
+
+ if(!entriesNames.contains("k3")) {
+ return (new Message("Missing entry \"k3\"", Severity.ERROR));
+ }
+
+ return (new Message("",Severity.DEFAULT));
+ }
+
+ @Override
+ public Message execute(Entry entry) {
+ if("k3".matches(entry.getKey())) {
+ String aspectsFields = entry.getValue();
+
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ IFile file = root.getFile(new Path(entry.eResource().getURI().toPlatformString(true)));
+
+ IProject proj = file.getProject();
+ IJavaProject jProj = JavaCore.create(proj);
+
+ if(jProj == null) {
+ return (new Message("No project dsa in the workspace", Severity.ERROR));
+ }
+
+ ArrayList aspectsName = new ArrayList<>();
+ ArrayList aspectsAnnotation = new ArrayList<>();
+
+ for(String s : aspectsFields.split(",")) {
+ aspectsName.add(s.trim());
+ }
+
+
+ for(String asp : aspectsName) {
+ try {
+ IType type = jProj.findType(asp);
+ for(IMethod meth : type.getMethods()) {
+ for(IAnnotation annot : meth.getAnnotations()) {
+ aspectsAnnotation.add(annot.getElementName());
+ }
+ }
+ } catch (Exception e) {
+ return (new Message("No aspect matching \""+asp+ "\" in the project", Severity.ERROR));
+ }
+ }
+
+ if(tagTests) {
+
+ if(!aspectsAnnotation.contains("Main")) {
+ return (new Message("No method annotated with \"Main\" in the project", Severity.ERROR));
+ }
+
+ if(!aspectsAnnotation.contains("InitializeModel")) {
+ return (new Message("No method annotated with \"InitializeModel\" in the project", Severity.WARNING));
+ }
+
+ }
+
+ }
+ return (new Message("", Severity.DEFAULT));
+ }
+}
diff --git a/framework/xdsml_framework/pom.xml b/framework/xdsml_framework/pom.xml
index 06178e2fa..6aa2d7b73 100644
--- a/framework/xdsml_framework/pom.xml
+++ b/framework/xdsml_framework/pom.xml
@@ -18,7 +18,8 @@
plugins/org.eclipse.gemoc.xdsmlframework.ui.utils
plugins/org.eclipse.gemoc.xdsmlframework.ide.ui
- plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius
+ plugins/org.eclipse.gemoc.xdsmlframework.extensions.sirius
+ plugins/org.eclipse.gemoc.xdsmlframework.extensions.kermeta3
tests/org.eclipse.gemoc.xdsmlframework.test.lib