diff --git a/plugins/gui/org.eclipse.papyrus.sysml16.architecture/src/org/eclipse/papyrus/sysml16/architecture/internal/UMLtoSyML16ModelConversionCommand.java b/plugins/gui/org.eclipse.papyrus.sysml16.architecture/src/org/eclipse/papyrus/sysml16/architecture/internal/UMLtoSyML16ModelConversionCommand.java
index d00c79a..068b6d4 100644
--- a/plugins/gui/org.eclipse.papyrus.sysml16.architecture/src/org/eclipse/papyrus/sysml16/architecture/internal/UMLtoSyML16ModelConversionCommand.java
+++ b/plugins/gui/org.eclipse.papyrus.sysml16.architecture/src/org/eclipse/papyrus/sysml16/architecture/internal/UMLtoSyML16ModelConversionCommand.java
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (c) 2019 CEA LIST, and others.
+ * Copyright (c) 2019, 2021 CEA LIST, and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  *
  * Contributors:
  *   Nicolas FAUVERGUE (CEA LIST) nicolas.fauvergue@cea.fr - Initial API and implementation
+ *   Pauline DEVILLE (CEA LIST) pauline.deville@cea.fr - Bug 575117
  *
  *****************************************************************************/
 
@@ -18,8 +19,11 @@
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.transaction.RollbackException;
 import org.eclipse.gmf.runtime.common.core.command.AbstractCommand;
 import org.eclipse.gmf.runtime.common.core.command.CommandResult;
@@ -29,9 +33,12 @@
 import org.eclipse.gmf.runtime.notation.Diagram;
 import org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand;
 import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.emf.gmf.command.EMFtoGMFCommandWrapper;
 import org.eclipse.papyrus.infra.emf.gmf.util.GMFUnsafe;
 import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
 import org.eclipse.papyrus.infra.gmfdiag.style.PapyrusDiagramStyle;
+import org.eclipse.papyrus.infra.nattable.model.nattable.NattablePackage;
+import org.eclipse.papyrus.infra.nattable.model.nattable.Table;
 import org.eclipse.papyrus.sysml16.architecture.util.SysML16chitectureUtil;
 
 /**
@@ -41,19 +48,23 @@
 
 	/**
 	 * {@inheritDoc}
-	 * 
+	 *
 	 * @see org.eclipse.papyrus.infra.architecture.commands.IModelConversionCommand#convertModel(org.eclipse.papyrus.infra.core.resource.ModelSet)
 	 */
 	@Override
 	public void convertModel(final ModelSet modelSet) {
 		NotationModel model = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
-		CompositeCommand compositeCommand = new CompositeCommand("Conversion to SysML 1.6 context");
+		CompositeCommand compositeCommand = new CompositeCommand("Conversion to SysML 1.6 context"); //$NON-NLS-1$
 		for (Resource current : model.getResources()) {
 			for (EObject element : current.getContents()) {
 				if (element instanceof Diagram) {
 					ICommand convertDiagram = convertDiagram((Diagram) element);
 					compositeCommand.add(convertDiagram);
 				}
+				if (element instanceof Table) {
+					ICommand convertDiagram = convertTable((Table) element, modelSet.getTransactionalEditingDomain());
+					compositeCommand.add(convertDiagram);
+				}
 			}
 		}
 
@@ -65,7 +76,39 @@
 	}
 
 	/**
-	 * Provide an ICommand for each diagram that need a conversion
+	 * Provide an ICommand for each table that needs a conversion
+	 *
+	 * @param element
+	 * @param domain
+	 * @return
+	 */
+	private ICommand convertTable(final Table element, final EditingDomain domain) {
+		Command command = null;
+		switch (element.getTableKindId()) {
+		case "org.eclipse.papyrus.uml.table.genericTree": //$NON-NLS-1$
+			command = SetCommand.create(domain, element, NattablePackage.eINSTANCE.getTable_TableKindId(), "org.eclipse.papyrus.sysml16.table.genericTree"); //$NON-NLS-1$
+			break;
+		case "org.eclipse.papyrus.uml.table.classTree": //$NON-NLS-1$
+			command = SetCommand.create(domain, element, NattablePackage.eINSTANCE.getTable_TableKindId(), "org.eclipse.papyrus.sysml16.table.classTree"); //$NON-NLS-1$
+			break;
+		case "org.eclipse.papyrus.uml.table.generic": //$NON-NLS-1$
+			command = SetCommand.create(domain, element, NattablePackage.eINSTANCE.getTable_TableKindId(), "org.eclipse.papyrus.sysml16.table.generic"); //$NON-NLS-1$
+			break;
+		case "org.eclipse.papyrus.uml.table.view": //$NON-NLS-1$
+			command = SetCommand.create(domain, element, NattablePackage.eINSTANCE.getTable_TableKindId(), "org.eclipse.papyrus.sysml16.table.view"); //$NON-NLS-1$
+			break;
+		case "org.eclipse.papyrus.uml.table.matrix": //$NON-NLS-1$
+			command = SetCommand.create(domain, element, NattablePackage.eINSTANCE.getTable_TableKindId(), "org.eclipse.papyrus.sysml16.table.matrix"); //$NON-NLS-1$
+			break;
+		default:
+			break;
+		}
+		return command != null ? EMFtoGMFCommandWrapper.wrap(command) : IdentityCommand.INSTANCE;
+	}
+
+	/**
+	 * Provide an ICommand for each diagram that needs a conversion
+	 *
 	 * @param diagram
 	 * @return
 	 */
@@ -74,13 +117,13 @@
 			if (object instanceof PapyrusDiagramStyle) {
 				switch (((PapyrusDiagramStyle) object).getDiagramKindId()) {
 				// FIXME: UML Representation kind ids should be provided by API core
-				case "org.eclipse.papyrus.uml.diagram.package":
+				case "org.eclipse.papyrus.uml.diagram.package": //$NON-NLS-1$
 					return new SetPapyrusDiagramStyleCommand(diagram, SysML16chitectureUtil.DIAGRAM_PACKAGE_ID);
-				case "org.eclipse.papyrus.uml.diagram.activity":
+				case "org.eclipse.papyrus.uml.diagram.activity": //$NON-NLS-1$
 					return new SetPapyrusDiagramStyleCommand(diagram, SysML16chitectureUtil.DIAGRAM_ACTIVITY_ID);
-				case "org.eclipse.papyrus.uml.diagram.stateMachine":
+				case "org.eclipse.papyrus.uml.diagram.stateMachine": //$NON-NLS-1$
 					return new SetPapyrusDiagramStyleCommand(diagram, SysML16chitectureUtil.DIAGRAM_STATE_MACHINE_ID);
-				case "org.eclipse.papyrus.uml.diagram.useCase":
+				case "org.eclipse.papyrus.uml.diagram.useCase": //$NON-NLS-1$
 					return new SetPapyrusDiagramStyleCommand(diagram, SysML16chitectureUtil.DIAGRAM_USE_CASE_ID);
 				default:// not conversion available
 					break;
@@ -92,7 +135,7 @@
 
 	///////////////////////////////////////////////////////////////////////////////
 	/**
-	 * FIXME: Should be provided as API by the core 
+	 * FIXME: Should be provided as API by the core
 	 * TODO: should be undoable
 	 * A command to set the diagram kind to a diagram
 	 */
@@ -102,7 +145,7 @@
 		private String diagramKind;
 
 		public SetPapyrusDiagramStyleCommand(Diagram diagram, String newStyle) {
-			super("Set new diagram kind for Papyrus Style");
+			super("Set new diagram kind for Papyrus Style"); //$NON-NLS-1$
 			this.diagram = diagram;
 			this.diagramKind = newStyle;
 		}
