diff --git a/org.eclipse.emf.refactor.refactoring.generator/plugin.xml b/org.eclipse.emf.refactor.refactoring.generator/plugin.xml
index aaf8e34..e71a33b 100644
--- a/org.eclipse.emf.refactor.refactoring.generator/plugin.xml
+++ b/org.eclipse.emf.refactor.refactoring.generator/plugin.xml
@@ -11,5 +11,48 @@
             name="Refactoring (specified in Java)">
       </wizard>
    </extension>
+   <extension
+         id="org.eclipse.emf.refactor.qa.menu"
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="true"
+            locationURI="popup:org.eclipse.ui.popup.any?after=additions">
+         <menu
+               id="org.eclipse.emf.refactor.generator.menu"
+               label="EMF Quality Assurance (define new techniques)">
+            <command
+                  commandId="org.eclipse.emf.refactor.refactoring.generator.generateNewRefactoringJavaCommand"
+                  icon="icons/refactoring.png"
+                  label="Generate New Refactoring (specified in Java)"
+                  style="push">
+               <visibleWhen
+                     checkEnabled="true">
+                  <iterate
+                        ifEmpty="false">
+                     <instanceof
+                           value="org.eclipse.emf.ecore.EObject">
+                     </instanceof>
+                  </iterate>
+               </visibleWhen>
+            </command>
+         </menu>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            id="org.eclipse.emf.refactor.refactoring.generator.generateNewRefactoringJavaCommand"
+            name="GenerateNewRefactoringJavaCommand">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.emf.refactor.refactoring.generator.handler.GenerateNewRefactoringJavaCommandHandler"
+            commandId="org.eclipse.emf.refactor.refactoring.generator.generateNewRefactoringJavaCommand">
+      </handler>
+
+   </extension>
+   
 
 </plugin>
diff --git a/org.eclipse.emf.refactor.refactoring.generator/src/org/eclipse/emf/refactor/refactoring/generator/handler/GenerateNewRefactoringJavaCommandHandler.java b/org.eclipse.emf.refactor.refactoring.generator/src/org/eclipse/emf/refactor/refactoring/generator/handler/GenerateNewRefactoringJavaCommandHandler.java
new file mode 100644
index 0000000..4c94b96
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactoring.generator/src/org/eclipse/emf/refactor/refactoring/generator/handler/GenerateNewRefactoringJavaCommandHandler.java
@@ -0,0 +1,50 @@
+package org.eclipse.emf.refactor.refactoring.generator.handler;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.commands.IHandlerListener;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.refactor.refactoring.generator.ui.NewRefactoringWizardJava;
+import org.eclipse.emf.refactor.refactoring.managers.SelectionManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+public class GenerateNewRefactoringJavaCommandHandler implements IHandler {
+
+	@Override
+	public void addHandlerListener(IHandlerListener handlerListener) { }
+
+	@Override
+	public void dispose() { }
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		IWorkbenchWindow win = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+		ISelection selection = win.getSelectionService().getSelection();
+		List<EObject> context = SelectionManager.getESelection(selection);
+		EObject selectedEObject = context.get(0);
+		String metamodel = ((EPackage) selectedEObject.eClass().eContainer()).getNsURI();		
+		String contextType = selectedEObject.eClass().getInstanceClass().getSimpleName();	
+		NewRefactoringWizardJava wizard = new NewRefactoringWizardJava(metamodel, contextType);
+		wizard.init(win.getWorkbench(), (IStructuredSelection) selection);
+		WizardDialog dialog = new WizardDialog(win.getShell(), wizard);
+		return dialog.open();
+	}
+
+	@Override
+	public boolean isEnabled() { return true; }
+
+	@Override
+	public boolean isHandled() { return true; }
+
+	@Override
+	public void removeHandlerListener(IHandlerListener handlerListener) { }
+
+}
diff --git a/org.eclipse.emf.refactor.refactoring.generator/src/org/eclipse/emf/refactor/refactoring/generator/ui/NewRefactoringWizardJava.java b/org.eclipse.emf.refactor.refactoring.generator/src/org/eclipse/emf/refactor/refactoring/generator/ui/NewRefactoringWizardJava.java
index 4befb4c..519932b 100644
--- a/org.eclipse.emf.refactor.refactoring.generator/src/org/eclipse/emf/refactor/refactoring/generator/ui/NewRefactoringWizardJava.java
+++ b/org.eclipse.emf.refactor.refactoring.generator/src/org/eclipse/emf/refactor/refactoring/generator/ui/NewRefactoringWizardJava.java
@@ -75,12 +75,7 @@
 	public NewRefactoringWizardJava(){
 		super();
 		setWindowTitle("EMF Refactor - Specify EMF Model Refactoring");
-		this.basicWizardPage = new BasicDataWizardPage();
-		this.parameterWizardPage = new ParameterWizardPage();
-		this.testWizardPage = new TestWizardPage();
-		this.addPage(basicWizardPage);
-		this.addPage(parameterWizardPage);
-		this.addPage(testWizardPage);
+		this.addPages();
 	}
 	
 //	/**
@@ -99,6 +94,33 @@
 //		this.addPage(testWizardPage);
 //	}
 
+	public NewRefactoringWizardJava(String metamodel, String contextType) {
+		super();
+		setWindowTitle("EMF Refactor - Specify EMF Model Refactoring");
+		this.namespaceUri = metamodel;
+		this.className = contextType;
+		this.addPages();
+	}
+	
+	@Override
+	public void addPages() {
+		this.basicWizardPage = new BasicDataWizardPage();
+		this.parameterWizardPage = new ParameterWizardPage();
+		this.testWizardPage = new TestWizardPage();
+		if (namespaceUri != null && ! namespaceUri.isEmpty() 
+				&& className != null && ! className.isEmpty()) {
+			setMetamodelAndContext();
+		}
+		this.addPage(basicWizardPage);
+		this.addPage(parameterWizardPage);
+		this.addPage(testWizardPage);
+	}
+	
+	public void setMetamodelAndContext() {
+		basicWizardPage.setMetamodel(namespaceUri);
+		basicWizardPage.setContextType(className);
+	}
+
 	/**
 	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
 	 */
