diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/EglFlexmiEmfaticStandaloneExample.java b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/EglFlexmiEmfaticStandaloneExample.java
new file mode 100644
index 0000000..2a5cb7f
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/EglFlexmiEmfaticStandaloneExample.java
@@ -0,0 +1,36 @@
+package org.eclipse.epsilon.examples.standalone.egl.flexmiemfatic;
+
+import java.nio.file.Paths;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.emfatic.core.EmfaticResourceFactory;
+import org.eclipse.epsilon.egl.EglTemplateFactoryModuleAdapter;
+import org.eclipse.epsilon.emc.emf.EmfModel;
+import org.eclipse.epsilon.flexmi.FlexmiResourceFactory;
+
+public class EglFlexmiEmfaticStandaloneExample {
+
+	public static void main(String[] args) throws Exception {
+
+		// Make Flexmi and Emfatic known to EMF as we will use them
+		// to express the input model and metamodel of the transformation
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("flexmi", new FlexmiResourceFactory());
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("emf", new EmfaticResourceFactory());
+		
+		// Parse the EGL template
+		EglTemplateFactoryModuleAdapter module = new EglTemplateFactoryModuleAdapter();
+		module.parse(EglFlexmiEmfaticStandaloneExample.class.getResource("project2html.egl"));
+		
+		// Configure its source model
+		EmfModel model = new EmfModel();
+		model.setModelFile(Paths.get(EglFlexmiEmfaticStandaloneExample.class.getResource("psl.flexmi").toURI()).toFile().getAbsolutePath());
+		model.setMetamodelFile(Paths.get(EglFlexmiEmfaticStandaloneExample.class.getResource("psl.emf").toURI()).toFile().getAbsolutePath());
+		model.setName("M");
+		model.load();
+		module.getContext().getModelRepository().addModel(model);
+
+		// Execute the EGL template and print its output
+		System.out.println(module.execute());
+	}
+
+}
diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/project2html.egl b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/project2html.egl
new file mode 100644
index 0000000..80b3560
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/project2html.egl
@@ -0,0 +1,24 @@
+<html>
+<head>
+[*Bootstrap CSS*]
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
+</head>
+
+<table class="table table-striped">
+[*Generate a header row with the names of all persons*]
+<tr>
+	<th></th>
+	[%for (p in Person.all){%]
+	<th>[%=p.name%]</th>
+	[%}%]
+</tr>
+[*Generate one row per task with the participants' effort*]
+[%for (t in Task.all){%]
+<tr>
+	<th>[%=t.title%]</th>
+	[%for (p in Person.all){%]
+	<td>[%=t.effort.selectOne(e|e.person = p)?.percentage ?: 0%]%</td>
+	[%}%]
+</tr>
+[%}%]
+</table>
\ No newline at end of file
diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.emf b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.emf
new file mode 100644
index 0000000..5c9f4c7
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.emf
@@ -0,0 +1,28 @@
+@namespace(uri="psl", prefix="")
+package psl;
+
+class Project {
+	attr String title;
+	attr String description;
+	val Task[*] tasks;
+	@diagram(direction="right")
+	val Person[*] people;
+}
+
+class Task {
+	attr String title;
+	attr int start;
+	attr int duration;
+	@diagram(direction="right")
+	val Effort[*] effort;
+}
+
+class Person {
+	attr String name;
+}
+
+class Effort {
+    @diagram(direction="up")
+	ref Person person;
+	attr int percentage = 100;
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.flexmi b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.flexmi
new file mode 100644
index 0000000..bd5e81e
--- /dev/null
+++ b/examples/org.eclipse.epsilon.examples.standalone/src/org/eclipse/epsilon/examples/standalone/egl/flexmiemfatic/psl.flexmi
@@ -0,0 +1,15 @@
+<?nsuri psl?>
+<project title="ACME">
+	<person name="Alice"/>
+	<person name="Bob"/>
+	<task title="Analysis" start="1" dur="3">
+		<effort person="Alice"/>
+	</task>
+	<task title="Design" start="4" dur="6">
+		<effort person="Bob"/>
+	</task>
+	<task title="Implementation" start="7" dur="3">
+		<effort person="Bob" perc="50"/>
+		<effort person="Alice" perc="50"/>
+	</task>
+</project>
\ No newline at end of file
