diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF
index 568231f..f066d5c 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/META-INF/MANIFEST.MF
@@ -24,14 +24,9 @@
  org.eclipse.papyrus.infra.core.log,
  org.eclipse.papyrus.infra.services.resourceloading,
  org.eclipse.gendoc.bundle.acceleo.commons,
- org.eclipse.papyrus.infra.nattable,
  org.eclipse.gendoc.documents,
  org.eclipse.gendoc.table,
- org.eclipse.nebula.widgets.nattable.core,
- org.eclipse.papyrus.infra.nattable.model,
- org.eclipse.papyrus.infra.emf,
- org.eclipse.papyrus.infra.services.labelprovider,
- ca.odell.glazedlists
+ org.eclipse.papyrus.infra.emf
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml
index d683e77..8be3244 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/pom.xml
@@ -36,7 +36,6 @@
 					<packagesToRegister>
 						<packageToRegister>org.eclipse.emf.ecore.EcorePackage</packageToRegister>
 						<packageToRegister>org.eclipse.gmf.runtime.notation.NotationPackage</packageToRegister>
-						<packageToRegister>org.eclipse.papyrus.infra.nattable.model.nattable.NattablePackage</packageToRegister>
 						<packageToRegister>org.eclipse.gendoc.table.TablePackage</packageToRegister>
 						<packageToRegister>org.eclipse.uml2.uml.UMLPackage</packageToRegister>
 					</packagesToRegister>
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl
index 41ef065..18cba90 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/mtl/papyrus.mtl
@@ -10,7 +10,7 @@
 															   fix bug #506575 : add a getAppliedComments function
   Antonio Campesino Robles (Ericsson) - Bug 531275 
 /]
-[module papyrus('http://www.eclipse.org/gmf/runtime/1.0.2/notation','http://www.eclipse.org/uml2/5.0.0/UML','http://www.eclipse.org/papyrus/nattable/model','http://www.eclipse.org/gendoc/1.0/table')/]
+[module papyrus('http://www.eclipse.org/gmf/runtime/1.0.2/notation','http://www.eclipse.org/uml2/4.0.0/UML','http://www.eclipse.org/gendoc/1.0/table')/]
 
 [comment - get the diagrams of an object /]
 [query public getPapyrusDiagrams(arg0 : ecore::EObject) : Sequence(Diagram)
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusModelLoaderService.java b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusModelLoaderService.java
index d9d5ebc..3159a36 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusModelLoaderService.java
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusModelLoaderService.java
@@ -33,12 +33,12 @@
 import org.eclipse.papyrus.infra.core.resource.ModelIdentifiers;
 import org.eclipse.papyrus.infra.core.resource.ModelMultiException;
 import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.resource.notation.NotationModel;
 import org.eclipse.papyrus.infra.core.resource.sasheditor.SashModel;
+import org.eclipse.papyrus.infra.core.resource.uml.UmlModel;
 import org.eclipse.papyrus.infra.core.services.ExtensionServicesRegistry;
 import org.eclipse.papyrus.infra.core.services.ServiceException;
 import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
-import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
-import org.eclipse.papyrus.uml.tools.model.UmlModel;
 
 
 /**
@@ -189,25 +189,19 @@
 		ServicesRegistry servicesRegistry = new ExtensionServicesRegistry(
 				Activator.PLUGIN_ID);
 		try{
+			String uriStr = modelUri.toString();
+			int index = uriStr.lastIndexOf('.');
+			uriStr = uriStr.substring(0, index);
 			servicesRegistry.startServices(Collections.singletonList(ModelSet.class
 				.getName()));
 			modelSet = servicesRegistry.getService(ModelSet.class);
 			if (modelSet != null && modelUri != null) {
-				// load models
-				modelSet.loadModels(modelUri);
+				modelSet.getResource(URI.createURI(uriStr+".notation"), true);
+				modelSet.getResource(URI.createURI(uriStr+".uml"), true);
 			}
 			// start remaining services
 			servicesRegistry.startRegistry();
 		
-        } catch (ModelMultiException e) {
-			try {
-				// with the ModelMultiException it is still possible to open the
-				// editors that's why the service registry is still started
-				servicesRegistry.startRegistry();
-				
-			} catch (ServiceException e1) {
-				//Do nothing
-			}
 		} catch (ServiceException e) {
 			//Do nothing
 		}
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java
index c8b4a08..13fd690 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.papyrus/src/org/eclipse/gendoc/bundle/acceleo/papyrus/service/PapyrusServices.java
@@ -18,7 +18,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -45,10 +44,6 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
-import org.eclipse.emf.transaction.util.TransactionUtil;
 import org.eclipse.gendoc.bundle.acceleo.commons.files.CommonService;
 import org.eclipse.gendoc.bundle.acceleo.gmf.service.GMFServices;
 import org.eclipse.gendoc.bundle.acceleo.papyrus.Activator;
@@ -59,32 +54,9 @@
 import org.eclipse.gendoc.services.exception.ModelNotFoundException;
 import org.eclipse.gendoc.services.exception.ServiceException;
 import org.eclipse.gendoc.table.Table;
-import org.eclipse.gendoc.table.TableFactory;
-import org.eclipse.gendoc.table.TableHeader;
 import org.eclipse.gendoc.tags.handlers.IEMFModelLoaderService;
 import org.eclipse.gmf.runtime.notation.Diagram;
 import org.eclipse.gmf.runtime.notation.Style;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.nebula.widgets.nattable.config.ConfigRegistry;
-import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
-import org.eclipse.nebula.widgets.nattable.layer.AbstractLayer;
-import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
-import org.eclipse.nebula.widgets.nattable.layer.ILayer;
-import org.eclipse.nebula.widgets.nattable.layer.cell.ColumnOverrideLabelAccumulator;
-import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell;
-import org.eclipse.nebula.widgets.nattable.layer.cell.TranslatedLayerCell;
-import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
-import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForEObject;
-import org.eclipse.papyrus.infra.nattable.dataprovider.BodyDataProvider;
-import org.eclipse.papyrus.infra.nattable.manager.table.ITableAxisElementProvider;
-import org.eclipse.papyrus.infra.nattable.manager.table.ITreeNattableModelManager;
-import org.eclipse.papyrus.infra.nattable.manager.table.NattableModelManager;
-import org.eclipse.papyrus.infra.nattable.selection.ObjectsSelectionExtractor;
-import org.eclipse.papyrus.infra.nattable.utils.Constants;
-import org.eclipse.papyrus.infra.nattable.utils.LabelProviderCellContextElementWrapper;
-import org.eclipse.papyrus.infra.nattable.utils.NattableConfigAttributes;
-import org.eclipse.papyrus.infra.nattable.utils.NattableModelManagerFactory;
-import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
 import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.NamedElement;
@@ -366,122 +338,7 @@
 	 * @throws org.eclipse.papyrus.infra.core.services.ServiceException 
 	 */
 	public Collection<Table> getPapyrusTables(EObject modelElement) throws ServiceException, org.eclipse.papyrus.infra.core.services.ServiceException {
-		Collection<Table> result = null;
-		
-		URI uri = modelElement.eResource().getURI();
-		Resource diResource = getDiResouce(modelElement, uri.trimFileExtension().appendFileExtension("notation"));
-		EditingDomain domain = TransactionUtil.getEditingDomain(diResource.getResourceSet());
-		if (domain == null) {
-			domain = TransactionalEditingDomainImpl.FactoryImpl.INSTANCE.createEditingDomain(diResource.getResourceSet());
-		}
-		
-		
-		for (Iterator<EObject> i = EcoreUtil.getAllProperContents(diResource, true); i.hasNext();) {
-			EObject eobject = i.next();
-			if (eobject instanceof org.eclipse.papyrus.infra.nattable.model.nattable.Table) {
-
-				org.eclipse.papyrus.infra.nattable.model.nattable.Table table = (org.eclipse.papyrus.infra.nattable.model.nattable.Table) eobject;
-				if (table.getOwner() != null && table.getOwner().equals(modelElement)) {
-					if(result == null)
-					{
-						 result = new LinkedList<org.eclipse.gendoc.table.Table>();
-							
-					}
-					result.add(getGendocTable(table));
-				}
-				
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Transform a Papyrus Table to a GendocTable
-	 * @param table Papyrus Nattable table
-	 * @return the corresponding Gendoc table
-	 * @throws ServiceException LabelProviderService not accessible
-	 * @throws org.eclipse.papyrus.infra.core.services.ServiceException 
-	 */
-	private Table getGendocTable(org.eclipse.papyrus.infra.nattable.model.nattable.Table table) throws ServiceException, org.eclipse.papyrus.infra.core.services.ServiceException {
-		Table gendocTable = TableFactory.eINSTANCE.createTable();
-		// Set Papyrus table name
-		gendocTable.setName(table.getName());
-		// Set Papyrus table type
-		gendocTable.setType(table.getTableConfiguration().getType());
-		// Initialize useful services accessors
-		final NattableModelManager nattableModelManager = (NattableModelManager) NattableModelManagerFactory.INSTANCE
-				.createNatTableModelManager(table, new ObjectsSelectionExtractor());
-				ITableAxisElementProvider axisElementProvider = nattableModelManager.getTableAxisElementProvider(); 
-		List<Object> horizontalHeader = axisElementProvider.getColumnElementsList();
-		LabelProviderService labelProviderService = ServiceUtilsForEObject.getInstance().getServiceRegistry(table.getContext()).getService(LabelProviderService.class);
-		ConfigRegistry configRegistry = new ConfigRegistry();
-		configRegistry.registerConfigAttribute(NattableConfigAttributes.NATTABLE_MODEL_MANAGER_CONFIG_ATTRIBUTE, nattableModelManager, DisplayMode.NORMAL, NattableConfigAttributes.NATTABLE_MODEL_MANAGER_ID);
-		configRegistry.registerConfigAttribute(NattableConfigAttributes.LABEL_PROVIDER_SERVICE_CONFIG_ATTRIBUTE, labelProviderService, DisplayMode.NORMAL, NattableConfigAttributes.LABEL_PROVIDER_SERVICE_ID);
-		LabelProviderService serv = configRegistry.getConfigAttribute(NattableConfigAttributes.LABEL_PROVIDER_SERVICE_CONFIG_ATTRIBUTE, DisplayMode.NORMAL, NattableConfigAttributes.LABEL_PROVIDER_SERVICE_ID);
-		
-		// extracting data from axis
-		TableHeader header = TableFactory.eINSTANCE.createTableHeader();
-		for (Object axis : horizontalHeader) {
-			org.eclipse.gendoc.table.Cell cell = TableFactory.eINSTANCE.createCell();
-			cell.setLabel( getColumnLabel(nattableModelManager, configRegistry, serv, axis));
-			header.getCells().add(cell);
-		}
-		gendocTable.setTableheader(header);
-		
-		// extracting data from body cells
-		
-		//FIXME remove references to ILayer, ILayerCell
-		ILayer  dataLayer = new DataLayer(new BodyDataProvider(nattableModelManager));
-		((AbstractLayer) dataLayer).setConfigLabelAccumulator(new ColumnOverrideLabelAccumulator(dataLayer));
-		((AbstractLayer) dataLayer).setRegionName(GridRegion.BODY);
-		ILayerCell layer = new TranslatedLayerCell(null, dataLayer,0, 0, 0, 0);
-		for (int rowPosition = 0; rowPosition < nattableModelManager.getRowCount(); rowPosition++) {
-			boolean isEmpty = (nattableModelManager instanceof ITreeNattableModelManager);
-			org.eclipse.gendoc.table.Row row = TableFactory.eINSTANCE.createRow();
-			for (int columnPosition = 0; columnPosition < nattableModelManager.getColumnCount(); columnPosition++) {
-				org.eclipse.gendoc.table.Cell cell = TableFactory.eINSTANCE.createCell();
-			   	Object value = nattableModelManager.getDataValue(columnPosition, rowPosition);
-				LabelProviderCellContextElementWrapper contextElement = new LabelProviderCellContextElementWrapper();
-				contextElement.setObject(value);
-				contextElement.setConfigRegistry(configRegistry);
-				ILabelProvider bodylabelProvider = serv.getLabelProvider(Constants.TABLE_LABEL_PROVIDER_CONTEXT, contextElement);
-				contextElement.setCell(layer);
-				String label = bodylabelProvider.getText(value); 
-				cell.setLabel(label);
-				isEmpty = isEmpty && label.isEmpty();
-				row.getCells().add(cell);
-				if (nattableModelManager instanceof ITreeNattableModelManager) {
-					((ITreeNattableModelManager)nattableModelManager).getTreeList().setExpanded(rowPosition, true);
-				}
-			}
-			if (!isEmpty)
-				gendocTable.getRows().add(row);
-		}
-		return gendocTable;
-	}
-
-	/**
-	 * Get a label of Papyrus table axis  
-	 * @param nattableModelManager
-	 * @param configRegistry
-	 * @param serv
-	 * @param axis
-	 * @return
-	 */
-	private String getColumnLabel(final NattableModelManager nattableModelManager, ConfigRegistry configRegistry,
-			LabelProviderService serv, Object axis) {
-		LabelProviderCellContextElementWrapper contextElement = new LabelProviderCellContextElementWrapper();
-		contextElement.setObject(axis);
-		contextElement.setConfigRegistry(configRegistry);
-		
-		//FIXME remove references to ILayer, ILayerCell
-		ILayer  dataLayer = new DataLayer(new BodyDataProvider(nattableModelManager));
-		((AbstractLayer) dataLayer).setConfigLabelAccumulator(new ColumnOverrideLabelAccumulator(dataLayer));
-		((AbstractLayer) dataLayer).setRegionName(GridRegion.COLUMN_HEADER);
-		ILayerCell layer = new TranslatedLayerCell(null, dataLayer,0, 0, 0, 0);
-		contextElement.setCell(layer);
-		ILabelProvider headerlabelProvider = serv.getLabelProvider(Constants.HEADER_LABEL_PROVIDER_CONTEXT, contextElement);
-		return headerlabelProvider.getText(contextElement);
+		throw new UnsupportedOperationException("Tables are not implemented in Papyrus Juno");
 	}
 
 	/**
diff --git a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF
index 38b28c8..facd8e6 100644
--- a/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.gendoc.bundle.acceleo.sirius/META-INF/MANIFEST.MF
@@ -17,9 +17,9 @@
  org.eclipse.gendoc.services,
  org.eclipse.gendoc.process,
  org.eclipse.gendoc.tags.handlers,
- org.eclipse.sirius.diagram;bundle-version="2.0.4",
- org.eclipse.gendoc.bundle.acceleo.commons;bundle-version="0.6.0",
- org.eclipse.sirius.table;bundle-version="4.1.3",
+ org.eclipse.sirius.diagram,
+ org.eclipse.gendoc.bundle.acceleo.commons,
+ org.eclipse.sirius.table,
  org.eclipse.gendoc.documents,
  org.eclipse.gendoc.table
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/tests/org.eclipse.gendoc.services.openoffice.test/src/org/eclipse/gendoc/services/openoffice/test/OpenOfficeVerifyHelper.java b/tests/org.eclipse.gendoc.services.openoffice.test/src/org/eclipse/gendoc/services/openoffice/test/OpenOfficeVerifyHelper.java
index 69c9dba..f0c40dc 100644
--- a/tests/org.eclipse.gendoc.services.openoffice.test/src/org/eclipse/gendoc/services/openoffice/test/OpenOfficeVerifyHelper.java
+++ b/tests/org.eclipse.gendoc.services.openoffice.test/src/org/eclipse/gendoc/services/openoffice/test/OpenOfficeVerifyHelper.java
@@ -224,7 +224,7 @@
 				Assert.assertEquals(message,expected,value); 
 				break;
 			case 1:
-				Assert.assertNotEquals(message,expected,value);
+				Assert.assertNotSame(message,expected,value);
 				break;
 			case 2:
 				Assert.assertNull(message,value);
