diff --git a/org.eclipse.opencert.infra.dashboard/META-INF/MANIFEST.MF b/org.eclipse.opencert.infra.dashboard/META-INF/MANIFEST.MF
index 35e8c8d..470cebc 100644
--- a/org.eclipse.opencert.infra.dashboard/META-INF/MANIFEST.MF
+++ b/org.eclipse.opencert.infra.dashboard/META-INF/MANIFEST.MF
@@ -7,16 +7,17 @@
 Bundle-Vendor: Tecnalia
 Require-Bundle: org.eclipse.opencert.pkm.refframework.diagram;bundle-version="1.0.0",
  org.eclipse.amalgam.explorer.activity.ui;bundle-version="1.7.0",
- org.eclipse.ui.navigator;bundle-version="3.6.101",
  org.eclipse.sirius;bundle-version="4.1.4",
  org.apache.commons.lang;bundle-version="2.6.0",
- org.eclipse.ui.ide;bundle-version="3.12.3",
- org.eclipse.emf.common.ui;bundle-version="2.11.0",
- org.eclipse.ui.views.properties.tabbed;bundle-version="3.7.0",
  org.eclipse.papyrus.infra.onefile;bundle-version="2.0.0",
- org.eclipse.emf.cdo;bundle-version="4.5.0",
  org.eclipse.epf.authoring.ui;bundle-version="1.5.0",
  org.eclipse.opencert.apm.assurproj.wizards;bundle-version="1.0.0",
- org.polarsys.chess.wizards;bundle-version="0.9.0"
+ org.polarsys.chess.wizards;bundle-version="0.9.0",
+ org.eclipse.papyrus.sysml.diagram.requirement;bundle-version="2.0.0",
+ org.eclipse.papyrus.views.modelexplorer;bundle-version="2.1.0",
+ org.eclipse.papyrus.editor;bundle-version="1.3.0",
+ org.eclipse.papyrus.sysml.diagram.internalblock;bundle-version="2.0.0",
+ org.eclipse.papyrus.sysml.diagram.blockdefinition;bundle-version="2.0.0",
+ org.eclipse.papyrus.uml.profile;bundle-version="2.0.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.opencert.infra.dashboard/icons/assurancecasemanagement/assurance_case_management_off.png b/org.eclipse.opencert.infra.dashboard/icons/assurancecasemanagement/assurance_case_management_off.png
new file mode 100644
index 0000000..c2909f7
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/assurancecasemanagement/assurance_case_management_off.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/assurancecasemanagement/assurance_case_management_on.png b/org.eclipse.opencert.infra.dashboard/icons/assurancecasemanagement/assurance_case_management_on.png
new file mode 100644
index 0000000..0b4964c
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/assurancecasemanagement/assurance_case_management_on.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/evidencemanagement/evidence_management_off.png b/org.eclipse.opencert.infra.dashboard/icons/evidencemanagement/evidence_management_off.png
new file mode 100644
index 0000000..de83923
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/evidencemanagement/evidence_management_off.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/evidencemanagement/evidence_management_on.png b/org.eclipse.opencert.infra.dashboard/icons/evidencemanagement/evidence_management_on.png
new file mode 100644
index 0000000..d2d6a3e
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/evidencemanagement/evidence_management_on.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/processcompliance/process_compliance_def_off.png b/org.eclipse.opencert.infra.dashboard/icons/processcompliance/process_compliance_def_off.png
new file mode 100644
index 0000000..d722da2
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/processcompliance/process_compliance_def_off.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/processcompliance/process_compliance_def_on.png b/org.eclipse.opencert.infra.dashboard/icons/processcompliance/process_compliance_def_on.png
new file mode 100644
index 0000000..c7fe3c5
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/processcompliance/process_compliance_def_on.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/processreusability/processreusability_off.png b/org.eclipse.opencert.infra.dashboard/icons/processreusability/processreusability_off.png
deleted file mode 100644
index 36601ab..0000000
--- a/org.eclipse.opencert.infra.dashboard/icons/processreusability/processreusability_off.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/processreusability/processreusability_on.png b/org.eclipse.opencert.infra.dashboard/icons/processreusability/processreusability_on.png
deleted file mode 100644
index 7a89f1b..0000000
--- a/org.eclipse.opencert.infra.dashboard/icons/processreusability/processreusability_on.png
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/block_definition_diagram.png b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/block_definition_diagram.png
new file mode 100644
index 0000000..c4ce74b
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/block_definition_diagram.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/requirement_diagram.png b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/requirement_diagram.png
new file mode 100644
index 0000000..077f896
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/requirement_diagram.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/system_design_analysis_vv_off.png b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/system_design_analysis_vv_off.png
new file mode 100644
index 0000000..b9c1d94
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/system_design_analysis_vv_off.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/system_design_analysis_vv_on.png b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/system_design_analysis_vv_on.png
new file mode 100644
index 0000000..d5bfd8d
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/icons/systemdesignanalysis/system_design_analysis_vv_on.png
Binary files differ
diff --git a/org.eclipse.opencert.infra.dashboard/plugin.xml b/org.eclipse.opencert.infra.dashboard/plugin.xml
index 7a6306d..8e07d1b 100644
--- a/org.eclipse.opencert.infra.dashboard/plugin.xml
+++ b/org.eclipse.opencert.infra.dashboard/plugin.xml
@@ -29,7 +29,7 @@
             title="Standard Compliance Definition"
             viewer="true">
          <Description>
-            Standard Compliance Definition in OpenCert
+            Project independent activities capture, digitalize, store and retrieve standard compliance knowledge. Specify reusable compliant process associated with a specific standard.
          </Description>
          <Predicate
                class="org.eclipse.opencert.infra.dashboard.predicates.DashboardPredicate">
@@ -85,7 +85,7 @@
                   index="0"
                   name="Modelling of reusable process elements">
                <Description>
-                  Description body text
+                  Modelling of reusable process elements.
                </Description>
             </Activity>
             <Activity
@@ -93,7 +93,7 @@
                   index="1"
                   name="Modelling of reusable process patterns">
                <Description>
-                  Description body text
+                  Modelling of reusable process patterns.
                </Description>
             </Activity>
             <Activity
@@ -118,7 +118,7 @@
             title="Assurance Project Definition"
             viewer="true">
          <Description>
-            Assurance Project Definition in OpenCert
+            Define the scope of compliance for a project, project compliance lifecycle, reuse possibilities and compliance means.
          </Description>
          <Predicate
                class="org.eclipse.opencert.infra.dashboard.predicates.DashboardPredicate">
@@ -192,7 +192,7 @@
                   index="0"
                   name="Cross system reuse">
                <Description>
-                  Description body text
+                  Cross system reuse.
                </Description>
             </Activity>
             <Activity
@@ -200,48 +200,751 @@
                   index="1"
                   name="Cross standard reuse">
                <Description>
-                  Description body text
+                  Cross standard reuse.
                </Description>
             </Activity>
          </Section>
       </Page>
       <Page
-            class="org.eclipse.opencert.infra.dashboard.pages.ProcessReusabilityDefinitionPage"
-            id="org.eclipse.opencert.infra.dashboard.pages.process.reusability.definition.page"
-            imageOff="icons/processreusability/processreusability_off.png"
-            imageOn="icons/processreusability/processreusability_on.png"
+            class="org.eclipse.opencert.infra.dashboard.pages.ProcessComplianceDefinitionPage"
+            id="org.eclipse.opencert.infra.dashboard.pages.process.compliance.definition.page"
+            imageOff="icons/processcompliance/process_compliance_def_off.png"
+            imageOn="icons/processcompliance/process_compliance_def_on.png"
             index="3"
-            tabName="Process Reusability Definition"
-            title="Process Reusability Definition"
+            tabName="Process Compliance Definition"
+            title="Process Compliance Definition"
             viewer="true">
          <Description>
-            Process Reusability Definition in OpenCert
+            Validate process reusability, deploy executable process.
          </Description>
          <Predicate
                class="org.eclipse.opencert.infra.dashboard.predicates.DashboardPredicate">
          </Predicate>
          <Overview
-               imageOff="icons/processreusability/processreusability_off.png"
-               imageOn="icons/processreusability/processreusability_on.png">
+               imageOff="icons/processcompliance/process_compliance_def_off.png"
+               imageOn="icons/processcompliance/process_compliance_def_on.png">
             <Description>
-               Define the process reusability.
+               Define the process compliance.
             </Description>
          </Overview>
          <Section
                expanded="true"
                filtering="true"
-               id="org.eclipse.opencert.infra.dashboard.section.process.reusability.definition"
+               id="org.eclipse.opencert.infra.dashboard.section.specify.compliance.process"
                index="0"
-               name="Process Reusability Definition">
+               name="Specify Compliance Process">
             <Description>
-               Define the process reuseabitlity.
+               The Process Engineer can import existing processes and resolve the variability due to safety/security appliance.
             </Description>
             <Activity
-                  id="org.eclipse.opencert.infra.dashboard.activity.define.process.reuseability"
+                  id="org.eclipse.opencert.infra.dashboard.activity.export.definition.planning"
                   index="0"
-                  name="Define process reuseability">
+                  name="Export the definition and planning of processes modelled ">
                <Description>
-                  Define the process reuseability.
+                  Export the definition and planning of processes modelled.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.import.definition.planning"
+                  index="1"
+                  name="Import the definition and planning of processes modelled into an assurance project">
+               <Description>
+                  Import the definition and planning of processes modelled into an assurance project.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.reuse.process.development"
+               index="1"
+               name="Reuse Process Development">
+            <Description>
+               The Process Engineer instantiate the reusable generic base process developed to a project specific process. A check is necessary to be sure that the assumptions for the reused activities are valid for the new project.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.derivate.project.specific.process"
+                  index="0"
+                  name="Derivate project specific process">
+               <Description>
+                  Derivate project specific process.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.check.process.reusability"
+                  index="1"
+                  name="Check process reusability">
+               <Description>
+                  Check process reusability.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.coassessment"
+               index="2"
+               name="Co-Assessment">
+            <Description>
+               The Process Engineer takes the modelling the definition and planning of processes already defined in EPF and import it into OpenCert in order to look at post-planning phases.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.coassessment.cross.system.reuse."
+                  index="0"
+                  name="Cross system reuse">
+               <Description>
+                  Cross system reuse.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.coassessment.cross.standard.reuse"
+                  index="1"
+                  name="Cross standard reuse">
+               <Description>
+                  Cross standard reuse.
+               </Description>
+            </Activity>
+         </Section>
+      </Page>
+      <Page
+            class="org.eclipse.opencert.infra.dashboard.pages.SystemDesignAnalysisVVPage"
+            id="org.eclipse.opencert.infra.dashboard.pages.system.design.analysis.vv"
+            imageOff="icons/systemdesignanalysis/system_design_analysis_vv_off.png"
+            imageOn="icons/systemdesignanalysis/system_design_analysis_vv_on.png"
+            index="4"
+            tabName="System Design Analysis and V&amp;V"
+            title="System Design Analysis and V&amp;V"
+            viewer="true">
+         <Description>
+            Define the system architecture, elicit system requirements, define and validate component contracts and execute Safety/Security analyses.
+         </Description>
+         <Predicate
+               class="org.eclipse.opencert.infra.dashboard.predicates.DashboardPredicate">
+         </Predicate>
+         <Overview
+               imageOff="icons/systemdesignanalysis/system_design_analysis_vv_off.png"
+               imageOn="icons/systemdesignanalysis/system_design_analysis_vv_on.png">
+            <Description>
+               System design, analysis, validation and verification
+            </Description>
+         </Overview>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.system.definition"
+               index="0"
+               name="System Definition">
+            <Description>
+               The development engineer uses SysML BDD, IBD and Requirements Diagrams, possibility to import requirements from external tools, formalization of requirements supported with syntax-driven editors.
+            </Description>
+            <Activity
+                  class="org.eclipse.opencert.infra.dashboard.pages.adapters.OpenNewChessProjectWizard"
+                  id="org.eclipse.opencert.infra.dashboard.activity.create.chess.project"
+                  image="icons/assuranceproject/chess_project_icon.png"
+                  index="0"
+                  name="Create a Papyrus CHESS project">
+               <Description>
+                  Create a Papyrus CHESS project.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.create.savona.project"
+                  index="1"
+                  name="Create a SAVONA project">
+               <Description>
+                  Create a SAVONA project.
+               </Description>
+            </Activity>
+            <Activity
+                  class="org.eclipse.opencert.infra.dashboard.pages.adapters.CreateNewChessRequirementDiagram"
+                  id="org.eclipse.opencert.infra.dashboard.activity.specify.requirements.chess"
+                  image="icons/systemdesignanalysis/requirement_diagram.png"
+                  index="2"
+                  name="Specify requirements in Papyrus CHESS">
+               <Description>
+                  Specify requirements in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  class="org.eclipse.opencert.infra.dashboard.pages.adapters.OpenImportUserModelDialogHyperLinkAdapter"
+                  id="org.eclipse.opencert.infra.dashboard.activity.import.requirements.chess"
+                  image="icons/systemdesignanalysis/requirement_diagram.png"
+                  index="3"
+                  name="Import requirements in Papyrus CHESS">
+               <Description>
+                  Import requirements in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  class="org.eclipse.opencert.infra.dashboard.pages.adapters.CreateNewChessBlockDefinitionDiagram"
+                  id="org.eclipse.opencert.infra.dashboard.activity.create.system.components.chess"
+                  image="icons/systemdesignanalysis/block_definition_diagram.png"
+                  index="4"
+                  name="Create system components in Papyrus CHESS">
+               <Description>
+                  Create system components in Papyrus CHESS
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.import.savona.model"
+                  index="5"
+                  name="Import a SAVONA model in Papyrus CHESS">
+               <Description>
+                  Import a SAVONA model in Papyrus CHESS.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.requirements.formalization.early.validation"
+               index="1"
+               name="Requirements Formalization and Early Validation">
+            <Description>
+               Formal semantic analysis of formal properties, analysis of requirements quality with machine learning techniques and requirements quality metrics editors.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.analysis.requirements.metric"
+                  index="0"
+                  name="Analysis of requirements based on quality metrics">
+               <Description>
+                  Analysis of requirements based on quality metrics.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.formalize.requirements.temporal.logic"
+                  index="1"
+                  name="Formalize a requirement into temporal logics in Papyrus CHESS">
+               <Description>
+                  Formalize a requirements into temporal logics in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.formalize.requirements.savona"
+                  index="2"
+                  name="Formalize a requirement in SAVONA">
+               <Description>
+                  Formalize a requirement in SAVONA.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.define.contract.component.chess"
+                  index="3"
+                  name="Define a contract for a component in Papyrus CHESS">
+               <Description>
+                  Define a contract for a component in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.analysis.requirements.semantics"
+                  index="4"
+                  name="Analysis of requirements’ semantics based on their formalisation into temporal logics">
+               <Description>
+                  Analysis of requirements’ semantics based on their formalisation into temporal logics.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.functional.refinement"
+               index="2"
+               name="Functional Refinement">
+            <Description>
+               Using SysML IBD extended with contracts.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.decompose.component.chess"
+                  index="0"
+                  name="Decompose a component in Papyrus CHESS">
+               <Description>
+                  Decompose a component in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.decompose.component.savona"
+                  index="1"
+                  name="Decompose a component in SAVONA">
+               <Description>
+                  Decompose a component in SAVONA.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.model.contracts.refinement.chess"
+                  index="2"
+                  name="Model contracts refinement in Papyrus CHESS">
+               <Description>
+                  Model contracts refinement in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.model.contracts.refinement.savona"
+                  index="3"
+                  name="Model contracts refinement in SAVONA">
+               <Description>
+                  Model contracts refinement in SAVONA.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.apply.architectural.patterns.chess"
+                  index="4"
+                  name="Apply architectural patterns in Papyrus CHESS">
+               <Description>
+                  Apply architectural patterns in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.specify.parameters.chess"
+                  index="5"
+                  name="Specify parameters of the parameterized architecture in Papyrus CHESS">
+               <Description>
+                  Specify parameters of the parameterized architecture in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.instantiate.parameterized.architecture.chess"
+                  index="6"
+                  name="Instantiate a parameterized architecture in Papyrus CHESS">
+               <Description>
+                  Instantiate a parameterized architecture in Papyrus CHESS.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.components.nominal.faulty.behaviour.definition"
+               index="3"
+               name="Component&apos;s Nominal and Faulty Behaviour Definition">
+            <Description>
+               Using State Machines or Simulink models extended with fault injection.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.define.nominal.statemachine.chess"
+                  index="0"
+                  name="Define a nominal state machine for a component in Papyrus CHESS">
+               <Description>
+                  Define a nominal state machine for a component in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.define.error.statemachine.chess"
+                  index="1"
+                  name="Define an error state machine for a component in Papyrus CHESS">
+               <Description>
+                  Define an error state machine for a component in Papyrus CHESS.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.define.failure.progation.rule.chess"
+                  index="2"
+                  name="Define a failure propagation rule for a component in Papyrus CHESS">
+               <Description>
+                  Define a failure propagation rule for a component in Papyrus CHESS.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.functional.early.verification"
+               index="4"
+               name="Functional Early Verification">
+            <Description>
+               Contract-based Verification of refinement and state-machines, Model Checking, Contract-based Monitoring of Simulink models, Contract-based Verification of Refinement with Strong and Weak Contracts.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.contractbased.verification.refinement"
+                  index="0"
+                  name="Contract-based verification of refinement">
+               <Description>
+                  Contract-based verification of refinement.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.contractbased.verification.statemachines"
+                  index="1"
+                  name="Contract-based verification of state machines">
+               <Description>
+                  Contract-based verification of state machines.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.model.checking"
+                  index="2"
+                  name="Model checking">
+               <Description>
+                  Model checking.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.contractbased.monitoring.simulink"
+                  index="3"
+                  name="Contract-based monitoring with Simulink">
+               <Description>
+                  Contract-based monitoring with Simulink.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.contractbased.verification.refinement.strong.weak"
+                  index="4"
+                  name="Contract-based verification of refinement for strong and weak contracts">
+               <Description>
+                  Contract-based verification of refinement for strong and weak contracts.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.contractbased.tradeoff.analysis"
+                  index="5"
+                  name="Contract-based trade-off analysis in parameterized architectures">
+               <Description>
+                  Contract-based trade-off analysis in parameterized architectures.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.coanalysis"
+               index="5"
+               name="Co-Analysis">
+            <Description>
+               The Development Engineer executes safety and security analysis using: Simulation-based Fault Injection, Model-Based Safety Analysis, Contract-Based Safety Analysis.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.simulationbased.fault.injection"
+                  index="0"
+                  name="Simulation-based fault injection">
+               <Description>
+                  Simulation-based fault injection.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.modelbased.fta"
+                  index="1"
+                  name="Model-based FTA">
+               <Description>
+                  Model-based FTA.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.modelbased.fmea"
+                  index="2"
+                  name="Model-based FMEA">
+               <Description>
+                  Model-based FMEA.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.contractbased.safety.analysis"
+                  index="3"
+                  name="Contract-based safety analysis">
+               <Description>
+                  Contract-based safety analysis.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.concerto.fla.coanalysis"
+                  index="4"
+                  name="Concerto FLA co-analysis">
+               <Description>
+                  Concerto FLA co-analysis.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.model.fmvea"
+                  index="5"
+                  name="Model failures modes vulnerability &amp; effects analysis">
+               <Description>
+                  Model failures modes vulnerability&amp; effects analysis.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.safetysecurity.coanalysis.sa"
+                  index="6"
+                  name="Safety &amp; Security co-analysis in Safety Architect">
+               <Description>
+                  Safety &amp; Security co-analysis in Safety Architect.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.dependability.coanalysis.papyrus.sse"
+                  index="7"
+                  name="System dependability co-analysis via Papyrus SSE">
+               <Description>
+                  System dependability co-analysis via Papyrus SSE.
+               </Description>
+            </Activity>
+         </Section>
+      </Page>
+      <Page
+            class="org.eclipse.opencert.infra.dashboard.pages.AssuranceCaseManagementPage"
+            id="org.eclipse.opencert.infra.dashboard.pages.assurance.case.management"
+            imageOff="icons/assurancecasemanagement/assurance_case_management_off.png"
+            imageOn="icons/assurancecasemanagement/assurance_case_management_on.png"
+            index="5"
+            tabName="Assurance Case Management"
+            title="Assurance Case Management"
+            viewer="true">
+         <Description>
+            Define argumentation using compliance arguments, product arguments. Resolve Safety/Security trade off, link to architecture.
+         </Description>
+         <Predicate
+               class="org.eclipse.opencert.infra.dashboard.predicates.DashboardPredicate">
+         </Predicate>
+         <Overview
+               imageOff="icons/assurancecasemanagement/assurance_case_management_off.png"
+               imageOn="icons/assurancecasemanagement/assurance_case_management_on.png">
+            <Description>
+               Assurance case management.
+            </Description>
+         </Overview>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.create.assurance.case.structure"
+               index="0"
+               name="Create Assurance Case Structure">
+            <Description>
+               The assurance engineer creates and manages assurance cases and link them to the assurance project asset package.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.create.assurance.case"
+                  index="0"
+                  name="Create a new assurance case">
+               <Description>
+                  Create a new assurance case.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.develop.claims.links.evidence"
+               index="1"
+               name="Develop Claims and Links to Evidence">
+            <Description>
+               The assurance engineer defines the argumentation structure, develops claims and links to evidences. The assurance engineer can take advantage of the arguments generation to complete the assurance case arguments.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.import.argumentation.model"
+                  index="0"
+                  name="Import argumentation model">
+               <Description>
+                  Import argumentation model.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.generate.arguments.fragments"
+                  index="1"
+                  name="Generate arguments fragments from system contracts">
+               <Description>
+                  Generate arguments fragments from system contracts.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.generate.process.based.arguments"
+                  index="2"
+                  name="Generate process based arguments">
+               <Description>
+                  Generate process based arguments.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.manage.architecture.assurance.links"
+               index="2"
+               name="Manage Architecture - Assurance Links">
+            <Description>
+               The assurance engineer or the development engineer can explicitly indicate the links between the system architecture components and the assurance cases elements such as argument modules.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.link.architecture.components"
+                  index="0"
+                  name="Link your architecture components to the assurance case elements">
+               <Description>
+                  Link your architecture components to the assurance case elements.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.assurance.case.reuse"
+               index="3"
+               name="Reuse">
+            <Description>
+               The assurance engineer can either create a reusable argument element such as argument patterns or arguments modules or use those elements in the actual argumentation. Assurance engineer can also reuse arguments based on the variability points specified.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.create.argument.pattern.module"
+                  index="0"
+                  name="Create an argument pattern or argument module">
+               <Description>
+                  Create an argument pattern or argument module.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.reuse.assurance.case.patterns.modules"
+                  index="1"
+                  name="Reuse from assurance case patterns and modules">
+               <Description>
+                  Reuse from assurance case patterns and modules.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.assurance.case.related.reuse"
+                  index="2"
+                  name="Assurance case-related reuse via management of assurance case lines">
+               <Description>
+                  Assurance case-related reuse via management of assurance case lines.
+               </Description>
+            </Activity>
+         </Section>
+      </Page>
+      <Page
+            class="org.eclipse.opencert.infra.dashboard.pages.EvidenceManagementPage"
+            id="org.eclipse.opencert.infra.dashboard.pages.evidence.management"
+            imageOff="icons/evidencemanagement/evidence_management_off.png"
+            imageOn="icons/evidencemanagement/evidence_management_on.png"
+            index="6"
+            tabName="Evidence Management"
+            title="Evidence Management"
+            viewer="true">
+         <Description>
+            Define the project evidences, define the traceability between artefacts, execute the process to generate evidence and map them to the compliance needs.
+         </Description>
+         <Predicate
+               class="org.eclipse.opencert.infra.dashboard.predicates.DashboardPredicate">
+         </Predicate>
+         <Overview
+               imageOff="icons/evidencemanagement/evidence_management_off.png"
+               imageOn="icons/evidencemanagement/evidence_management_on.png">
+            <Description>
+               Evidence management.
+            </Description>
+         </Overview>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.create.evidence.specification"
+               index="0"
+               name="Create Evidence Specification">
+            <Description>
+               The assurance engineer can create an evidence model and link it to the assurance project asset package.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.create.evidence.model"
+                  index="0"
+                  name="Create a new evidence model">
+               <Description>
+                  Create a new evidence model.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.create.artiface.traceability"
+               index="1"
+               name="Create Artefact Traceability">
+            <Description>
+               The assurance engineer can specify the traceability between the artefacts and other elements in the models.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.define.traceability.evidences"
+                  index="0"
+                  name="Define the traceability of your evidences">
+               <Description>
+                  Define the traceability of your evidences.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.execute.process.generate.artefacts"
+               index="2"
+               name="Execute Process and Generate Artefacts">
+            <Description>
+               The assurance engineer import evidences either from processes modelled in EPF, from external tools or in a process management tool such as WEFACT execute the processes and retrieve the generated evidences.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.import.process.evidences.epf"
+                  index="0"
+                  name="Import process and evidences from EPF">
+               <Description>
+                  Import process and evidences from EPF.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.import.evidences.external.tool"
+                  index="1"
+                  name="Import evidences from external tool">
+               <Description>
+                  Import evidences from external tool.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.execute.processes.generate.evidences"
+                  index="2"
+                  name="Execute processes to generate evidences">
+               <Description>
+                  Execute processes to generate evidences.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.manage.compliance.process.artefacts"
+               index="3"
+               name="Manage Compliance of Process and Artefacts">
+            <Description>
+               The assurance engineer should create and manage the mapping between what has been done and the needs of compliance from a standard/regulation… The assurance manager or the project manager can show the status of compliance of a project at any time.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.create.new.compliance.maps"
+                  index="0"
+                  name="Create a new compliance maps">
+               <Description>
+                  Create a new compliance maps.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.update.compliance.project"
+                  index="1"
+                  name="Update the compliance of a project">
+               <Description>
+                  Update the compliance of a project.
+               </Description>
+            </Activity>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.show.compliance.status.project"
+                  index="2"
+                  name="Show the compliance status of a project">
+               <Description>
+                  Show the compliance status of a project.
+               </Description>
+            </Activity>
+         </Section>
+         <Section
+               expanded="true"
+               filtering="true"
+               id="org.eclipse.opencert.infra.dashboard.section.evidence.management.reuse"
+               index="4"
+               name="Reuse">
+            <Description>
+               Evidence management reuse.
+            </Description>
+            <Activity
+                  id="org.eclipse.opencert.infra.dashboard.activity.manage.evidence.reuse.variability"
+                  index="0"
+                  name="Manage the evidence reuse variability">
+               <Description>
+                  Manage the evidence reuse variability.
                </Description>
             </Activity>
          </Section>
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/dialogs/PackageImportDialog.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/dialogs/PackageImportDialog.java
new file mode 100644
index 0000000..96b73be
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/dialogs/PackageImportDialog.java
@@ -0,0 +1,112 @@
+package org.eclipse.opencert.infra.dashboard.dialogs;
+
+import java.util.Collection;
+
+import org.eclipse.papyrus.uml.profile.ui.dialogs.PackageImportTreeSelectionDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * This class is cloned from org.eclipse.papyrus.uml.importt.ui as it could not be imported directly.
+ */
+public class PackageImportDialog extends PackageImportTreeSelectionDialog {
+
+	/**
+	 * Default constructor.
+	 * 
+	 * @param pShell The parent shell
+	 * @param pPackage The package to import
+	 */
+	public PackageImportDialog(Shell pShell, Package pPackage) {
+		super(pShell, pPackage);
+	}
+
+	/**
+	 * Constructor with a collection of packages to import.
+	 *
+	 * @param pShell The parent shell
+	 * @param pPackages The packages to import
+	 */
+	public PackageImportDialog(Shell pShell, Collection<? extends Package> pPackages) {
+		super(pShell, pPackages);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public Composite createDialogArea(Composite pParent) {
+		Composite vResult = (Composite) super.createDialogArea(pParent);
+
+		Composite vButtons = new Composite(vResult, SWT.NONE);
+		vButtons.setLayout(new RowLayout());
+
+		Button vBtnLoadAll = new Button(vButtons, SWT.PUSH);
+		vBtnLoadAll.setText("Load All"); //$NON-NLS-1$
+		vBtnLoadAll.addSelectionListener(new SelectionAdapter() {
+
+			/**
+			 * {@inheritDoc}
+			 */
+			@Override
+			public void widgetSelected(SelectionEvent pEvent) {
+				selectAll(ImportAction.LOAD);
+			}
+		});
+
+		Button vBtnImportAll = new Button(vButtons, SWT.PUSH);
+		vBtnImportAll.setText("Import All");//$NON-NLS-1$
+		vBtnImportAll.addSelectionListener(new SelectionAdapter() {
+
+			/**
+			 * {@inheritDoc}
+			 */
+			@Override
+			public void widgetSelected(SelectionEvent pEvent) {
+				selectAll(ImportAction.IMPORT);
+			}
+		});
+
+		Button vBtnCopyAll = new Button(vButtons, SWT.PUSH);
+		vBtnCopyAll.setText("Copy All"); //$NON-NLS-1$
+		vBtnCopyAll.addSelectionListener(new SelectionAdapter() {
+
+			/**
+			 * {@inheritDoc}
+			 */
+			@Override
+			public void widgetSelected(SelectionEvent pEvent) {
+				selectAll(ImportAction.COPY);
+			}
+		});
+
+		Button vBtnDeselectAll = new Button(vButtons, SWT.PUSH);
+		vBtnDeselectAll.setText("Deselect All"); //$NON-NLS-1$
+		vBtnDeselectAll.addSelectionListener(new SelectionAdapter() {
+
+			/**
+			 * {@inheritDoc}
+			 */
+			@Override
+			public void widgetSelected(SelectionEvent pEvent) {
+				selectAll(ImportAction.NONE);
+			}
+		});
+
+		return vResult;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected boolean isResizable() {
+		return true;
+	}
+}
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/handlers/OpenDashboardHandler.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/handlers/OpenDashboardHandler.java
index 072910e..6b4ba60 100644
--- a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/handlers/OpenDashboardHandler.java
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/handlers/OpenDashboardHandler.java
@@ -43,8 +43,11 @@
 import org.eclipse.ui.handlers.HandlerUtil;
 
 /**
- * Concrete implementation for command part in Command pattern. Open the
- * dashboard for the current active project.
+ * Concrete implementation for command part in Command pattern. Open the dashboard for the current active project.
+ *
+ * TODO:
+ * - handle the opened diagram editor for CDO project
+ * - handle multiple graphical editors opened from different CHESS models
  */
 public final class OpenDashboardHandler extends AbstractHandler {
 
@@ -97,15 +100,15 @@
 			}
 		} else {
 			// Otherwise, the selected element could be a CDOResource (for OpenCert project)
-			Object selectedObject = getFirstSelectionObject(pEvent);
-			if (selectedObject instanceof CDOResource) {
+			Object vSelectedObject = getFirstSelectionObject(pEvent);
+			if (vSelectedObject instanceof CDOResource) {
 				// TODO: handle the CDO resource
 			}
 		}
 
 		// Finally, if a session is found or created, open the corresponding activity explorer
 		if (Objects.nonNull(vSession)) {
-				OpenSessionAction.openActivityExplorer(vSession);
+			OpenSessionAction.openActivityExplorer(vSession);
 		} else {
 			// Otherwise, open the dashboard for a null session
 			IWorkbenchPage vActivePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/helpers/ChessPapyrusHelper.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/helpers/ChessPapyrusHelper.java
new file mode 100644
index 0000000..c9af856
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/helpers/ChessPapyrusHelper.java
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * Copyright (c) 2018 ALL4TEC.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Thanh Liem PHAN (ALL4TEC) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.opencert.infra.dashboard.helpers;
+
+import java.util.Objects;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.commands.Activator;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.uml2.uml.Model;
+
+/**
+ * Helper methods to work with Papyrus CHESS Uml model elements.
+ */
+public final class ChessPapyrusHelper {
+
+	/** Singleton instance of this class. */
+	public static final ChessPapyrusHelper INSTANCE = new ChessPapyrusHelper();
+
+	/** Text for warning there is no active Chess editor. */
+	private final String NO_ACTIVE_CHESS_EDITOR_WARNING_TEXT = "Active Papyrus CHESS editor not found"; //$NON-NLS-1$
+
+	/** Message for warning there is no active Chess editor. */
+	private final String NO_ACTIVE_CHESS_EDITOR_WARNING_MESSAGE = "At least one Papyrus CHESS editor must be active to create a new diagram. Please open a Papyrus CHESS model."; //$NON-NLS-1$
+
+	/** Name of the model requirement view. */
+	public static final String MODEL_REQUIREMENT_VIEW_NAME = "modelRequirementView"; //$NON-NLS-1$
+
+	/** Name of the model system view. */
+	public static final String MODEL_SYSTEM_VIEW_NAME = "modelSystemView"; //$NON-NLS-1$
+
+	/**
+	 * Default constructor, private to avoid instantiation.
+	 */
+	private ChessPapyrusHelper() {
+		super();
+	}
+
+	/**
+	 * @return The root UML model element, which is the first node in the resource content
+	 */
+	public Model getUmlModelFromResource(final Resource pResource) {
+		Model vModel = null;
+
+		// Get the current Model from the resource content
+		if (!pResource.getContents().isEmpty()) {
+			// Get the root object of the resource
+			EObject vObject = pResource.getContents().get(0);
+
+			if (vObject instanceof Model) {
+				vModel = (Model) vObject;
+			}
+		}
+
+		return vModel;
+	}
+
+	/**
+	 * @return The root UML model element, which is the first node in the resource content, or {@code null} if not found
+	 */
+	public Model getUmlModelFromModelSet(final ModelSet pModelSet) {
+		Objects.requireNonNull(pModelSet);
+
+		Model vModel = null;
+
+		// Retrieve the Uml URI from the model set
+		URI vUmlURI = pModelSet.getURIWithoutExtension().appendFileExtension("uml"); //$NON-NLS-1$
+		Resource vResource = pModelSet.getResource(vUmlURI, false);
+
+		// Get the current model from the resource content
+		if (Objects.nonNull(vResource) && !vResource.getContents().isEmpty()) {
+			// Get the root object of the resource
+			EObject vObject = vResource.getContents().get(0);
+
+			if (vObject instanceof Model) {
+				vModel = (Model) vObject;
+			}
+		}
+
+		return vModel;
+	}
+
+	/**
+	 * Get the root UML model from the diagram editor.
+	 *
+	 * @return The found UML {@link Model}, otherwise {@code null}
+	 */
+	public Model getUmlModelFromDiagramEditor(final IMultiDiagramEditor vPapyrusDiagramEditor) {
+		Model vRootModel = null;
+
+		// Try to goto the right package and create the new diagram there
+		if (Objects.nonNull(vPapyrusDiagramEditor)) {
+			ServicesRegistry vRegistry = vPapyrusDiagramEditor.getServicesRegistry();
+
+			if (Objects.nonNull(vRegistry)) {
+				ModelSet vModelSet = null;
+				try {
+					vModelSet = vRegistry.getService(ModelSet.class);
+				} catch (ServiceException pException) {
+					Activator.log.error(pException);
+				}
+
+				if (Objects.nonNull(vModelSet)) {
+					// Get the root model
+					vRootModel = ChessPapyrusHelper.INSTANCE.getUmlModelFromModelSet(vModelSet);
+				}
+			}
+		}
+
+		return vRootModel;
+	}
+
+	/**
+	 * @return The root UML model element, which is the first node in the resource content
+	 */
+	public org.eclipse.uml2.uml.Package getPackageFromModelByName(final Model pModel, final String pPackageName) {
+		Objects.requireNonNull(pModel);
+		return pModel.getNestedPackage(pPackageName);
+	}
+
+	/**
+	 * Open the message box to warn user that no active Papyrus editor is opened.
+	 */
+	public void openNoActivePapyrusEditorMessageBox() {
+		MessageBox vMessageBox = new MessageBox(EclipseHelper.getActiveShell(), SWT.OK | SWT.ICON_WARNING);
+
+		vMessageBox.setText(NO_ACTIVE_CHESS_EDITOR_WARNING_TEXT);
+		vMessageBox.setMessage(NO_ACTIVE_CHESS_EDITOR_WARNING_MESSAGE);
+		vMessageBox.open();
+	}
+}
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/helpers/EclipseHelper.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/helpers/EclipseHelper.java
index 860db70..454e652 100644
--- a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/helpers/EclipseHelper.java
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/helpers/EclipseHelper.java
@@ -5,11 +5,17 @@
  */
 package org.eclipse.opencert.infra.dashboard.helpers;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Objects;
+import java.util.Set;
 
 import org.apache.commons.lang.ArrayUtils;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
@@ -30,7 +36,7 @@
 	}
 
 	/**
-	 * Return the current active workbench window, or if none is active, the first workbench window known by eclipse.
+	 * Return the current active workbench window, or if none is active, the first workbench window known by Eclipse.
 	 *
 	 * @return The current workbench window
 	 */
@@ -138,4 +144,41 @@
 
 		return vActiveShell;
 	}
+
+	/**
+	 * Get all the editor references in all pages of all workbench windows.
+	 *
+	 * @return A set of all the editor references
+	 */
+	public static Set<IEditorReference> getAllEditorReferences() {
+		Set<IEditorReference> vAllEditorReferencesSet = new HashSet<>();
+
+		IWorkbench vWorkbench = PlatformUI.getWorkbench();
+
+		for (IWorkbenchWindow vWindow : vWorkbench.getWorkbenchWindows()) {
+			for (IWorkbenchPage vPage : vWindow.getPages()) {
+				vAllEditorReferencesSet.addAll(Arrays.asList(vPage.getEditorReferences()));
+			}
+		}
+
+		return vAllEditorReferencesSet;
+	}
+
+	/**
+	 * @return The first Papyrus diagram editor part from all editors, or {@code null} if not found
+	 */
+	public static IMultiDiagramEditor getFirstPapyrusDiagramEditorPart() {
+		IMultiDiagramEditor vEditorPart = null;
+		Iterator<IEditorReference> vIter = EclipseHelper.getAllEditorReferences().iterator();
+
+		while (vIter.hasNext() && Objects.isNull(vEditorPart)) {
+			IEditorReference vEditorReference = vIter.next();
+
+			if (vEditorReference.getEditor(false) instanceof IMultiDiagramEditor) {
+				vEditorPart = (IMultiDiagramEditor) vEditorReference.getEditor(false);
+			}
+		}
+
+		return vEditorPart;
+	}
 }
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/AssuranceCaseManagementPage.java
similarity index 75%
rename from org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
rename to org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/AssuranceCaseManagementPage.java
index 32f10db..7d96d6f 100644
--- a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/AssuranceCaseManagementPage.java
@@ -14,14 +14,14 @@
 package org.eclipse.opencert.infra.dashboard.pages;
 
 /**
- * Page describing the activities related to the process reusability definition.
+ * Page describing the activities related to the assurance case management.
  */
-public class ProcessReusabilityDefinitionPage extends AbstractActivityPage {
+public class AssuranceCaseManagementPage extends AbstractActivityPage {
 
 	/**
 	 * Default constructor.
 	 */
-	public ProcessReusabilityDefinitionPage() {
+	public AssuranceCaseManagementPage() {
 		super();
 	}
 
@@ -30,6 +30,6 @@
 	 */
 	@Override
 	protected String getHeaderTitle() {
-		return "Process Reusability Definition";
+		return "Assurance Case Management";
 	}
 }
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/EvidenceManagementPage.java
similarity index 75%
copy from org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
copy to org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/EvidenceManagementPage.java
index 32f10db..983dbf4 100644
--- a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/EvidenceManagementPage.java
@@ -14,14 +14,14 @@
 package org.eclipse.opencert.infra.dashboard.pages;
 
 /**
- * Page describing the activities related to the process reusability definition.
+ * Page describing the activities related to the evidence management.
  */
-public class ProcessReusabilityDefinitionPage extends AbstractActivityPage {
+public class EvidenceManagementPage extends AbstractActivityPage {
 
 	/**
 	 * Default constructor.
 	 */
-	public ProcessReusabilityDefinitionPage() {
+	public EvidenceManagementPage() {
 		super();
 	}
 
@@ -30,6 +30,6 @@
 	 */
 	@Override
 	protected String getHeaderTitle() {
-		return "Process Reusability Definition";
+		return "Evidence Management";
 	}
 }
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessComplianceDefinitionPage.java
similarity index 75%
copy from org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
copy to org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessComplianceDefinitionPage.java
index 32f10db..dd9953c 100644
--- a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessComplianceDefinitionPage.java
@@ -14,14 +14,14 @@
 package org.eclipse.opencert.infra.dashboard.pages;
 
 /**
- * Page describing the activities related to the process reusability definition.
+ * Page describing the activities related to the process compliance definition.
  */
-public class ProcessReusabilityDefinitionPage extends AbstractActivityPage {
+public class ProcessComplianceDefinitionPage extends AbstractActivityPage {
 
 	/**
 	 * Default constructor.
 	 */
-	public ProcessReusabilityDefinitionPage() {
+	public ProcessComplianceDefinitionPage() {
 		super();
 	}
 
@@ -30,6 +30,6 @@
 	 */
 	@Override
 	protected String getHeaderTitle() {
-		return "Process Reusability Definition";
+		return "Process Compliance Definition";
 	}
 }
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/SystemDesignAnalysisVVPage.java
similarity index 75%
copy from org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
copy to org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/SystemDesignAnalysisVVPage.java
index 32f10db..f86c04e 100644
--- a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/ProcessReusabilityDefinitionPage.java
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/SystemDesignAnalysisVVPage.java
@@ -14,14 +14,14 @@
 package org.eclipse.opencert.infra.dashboard.pages;
 
 /**
- * Page describing the activities related to the process reusability definition.
+ * Page describing the activities related to the system design analysis, validation and verification.
  */
-public class ProcessReusabilityDefinitionPage extends AbstractActivityPage {
+public class SystemDesignAnalysisVVPage extends AbstractActivityPage {
 
 	/**
 	 * Default constructor.
 	 */
-	public ProcessReusabilityDefinitionPage() {
+	public SystemDesignAnalysisVVPage() {
 		super();
 	}
 
@@ -30,6 +30,6 @@
 	 */
 	@Override
 	protected String getHeaderTitle() {
-		return "Process Reusability Definition";
+		return "System Design Analysis and V&V";
 	}
 }
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/AbstractCreateNewChessDiagramHyperLinkAdapter.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/AbstractCreateNewChessDiagramHyperLinkAdapter.java
new file mode 100644
index 0000000..b82a8f0
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/AbstractCreateNewChessDiagramHyperLinkAdapter.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2018 ALL4TEC.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Thanh Liem PHAN (ALL4TEC) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.opencert.infra.dashboard.pages.adapters;
+
+import java.util.Objects;
+
+import org.eclipse.opencert.infra.dashboard.helpers.ChessPapyrusHelper;
+import org.eclipse.opencert.infra.dashboard.helpers.EclipseHelper;
+import org.eclipse.papyrus.commands.Activator;
+import org.eclipse.papyrus.commands.ICreationCommand;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.uml2.uml.Model;
+
+/**
+ * A {@link HyperlinkAdapter} to create a new CHESS diagram.
+ */
+public abstract class AbstractCreateNewChessDiagramHyperLinkAdapter
+		extends AbstractCreateNewChessElementHyperLinkAdapter {
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * Overridden to create a new diagram.
+	 */
+	@Override
+	protected void createChessElement() {
+		// Create a new diagram command
+		ICreationCommand vCreationCommand = getDiagramCreationCommand();
+
+		// Get the first opened Chess Papyrus editor
+		IMultiDiagramEditor vActivePapyrusEditor = (IMultiDiagramEditor) EclipseHelper.getFirstPapyrusDiagramEditorPart();
+		
+		// If there is one Chess graphical editor is opened,
+		// try to goto the right package and create the new diagram there
+		if (Objects.nonNull(vActivePapyrusEditor)) {
+			ServicesRegistry vRegistry = vActivePapyrusEditor.getServicesRegistry();
+
+			if (Objects.nonNull(vRegistry)) {
+				ModelSet vModelSet = null;
+				try {
+					vModelSet = vRegistry.getService(ModelSet.class);
+				} catch (ServiceException pException) {
+					Activator.log.error(pException);
+				}
+
+				if (Objects.nonNull(vModelSet)) {
+					// Get the root model
+					Model vRootModel = ChessPapyrusHelper.INSTANCE.getUmlModelFromModelSet(vModelSet);
+
+					// Get the target view package
+					org.eclipse.uml2.uml.Package vTargetViewPackage = getTargetPackage(vRootModel);
+
+					if (Objects.nonNull(vTargetViewPackage)) {
+						// Create the new diagram inside the target view package
+						vCreationCommand.createDiagram(vModelSet, vTargetViewPackage, null);
+
+						// Then goto the active Papyrus editor
+						EclipseHelper.getActiveWorkbenchPage().activate(vActivePapyrusEditor);
+					}
+				}
+			}
+		} else {
+			// Otherwise, no Chess graphical editor is already opened, ask user to open one
+			ChessPapyrusHelper.INSTANCE.openNoActivePapyrusEditorMessageBox();
+		}
+	}
+
+	/**
+	 * @return The creation command to create a diagram
+	 */
+	protected abstract ICreationCommand getDiagramCreationCommand();
+
+	/**
+	 * Get the target package in which the new diagram will be created.
+	 *
+	 * @param pRootModel The root model
+	 * @return The target package
+	 */
+	protected abstract org.eclipse.uml2.uml.Package getTargetPackage(Model pRootModel);
+}
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/AbstractCreateNewChessElementHyperLinkAdapter.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/AbstractCreateNewChessElementHyperLinkAdapter.java
new file mode 100644
index 0000000..6b05e35
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/AbstractCreateNewChessElementHyperLinkAdapter.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2018 ALL4TEC.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Thanh Liem PHAN (ALL4TEC) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.opencert.infra.dashboard.pages.adapters;
+
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+
+/**
+ * A {@link HyperlinkAdapter} to create a new CHESS element.
+ */
+public abstract class AbstractCreateNewChessElementHyperLinkAdapter extends HyperlinkAdapter {
+
+	/** ID of the model explorer view. */
+	protected static final String MODEL_EXPLORER_VIEW_ID = "org.eclipse.papyrus.views.modelexplorer.modelexplorer"; //$NON-NLS-1$
+
+	/**
+	 * Default constructor.
+	 */
+	public AbstractCreateNewChessElementHyperLinkAdapter() {
+		super();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void linkActivated(final HyperlinkEvent pEvent) {
+		createChessElement();
+	}
+
+	/**
+	 * Create a CHESS element when the link is pressed.
+	 */
+	protected abstract void createChessElement();
+}
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/CreateNewChessBlockDefinitionDiagram.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/CreateNewChessBlockDefinitionDiagram.java
new file mode 100644
index 0000000..ca41c56
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/CreateNewChessBlockDefinitionDiagram.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2018 ALL4TEC.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Thanh Liem PHAN (ALL4TEC) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.opencert.infra.dashboard.pages.adapters;
+
+import org.eclipse.opencert.infra.dashboard.helpers.ChessPapyrusHelper;
+import org.eclipse.papyrus.commands.ICreationCommand;
+import org.eclipse.papyrus.sysml.diagram.blockdefinition.BlockDefinitionDiagramCreateCommand;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * A {@link HyperlinkAdapter} to create a new CHESS block definition diagram.
+ */
+public class CreateNewChessBlockDefinitionDiagram extends AbstractCreateNewChessDiagramHyperLinkAdapter {
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected ICreationCommand getDiagramCreationCommand() {
+		return new BlockDefinitionDiagramCreateCommand();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected Package getTargetPackage(final Model pRootModel) {
+		return ChessPapyrusHelper.INSTANCE.getPackageFromModelByName(pRootModel,
+				ChessPapyrusHelper.MODEL_SYSTEM_VIEW_NAME);
+	}
+}
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/CreateNewChessRequirementDiagram.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/CreateNewChessRequirementDiagram.java
new file mode 100644
index 0000000..dc9569f
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/CreateNewChessRequirementDiagram.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2018 ALL4TEC.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Thanh Liem PHAN (ALL4TEC) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.opencert.infra.dashboard.pages.adapters;
+
+import org.eclipse.opencert.infra.dashboard.helpers.ChessPapyrusHelper;
+import org.eclipse.papyrus.commands.ICreationCommand;
+import org.eclipse.papyrus.sysml.diagram.requirement.RequirementDiagramCreateCommand;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * A {@link HyperlinkAdapter} to create a new CHESS requirement diagram.
+ */
+public class CreateNewChessRequirementDiagram extends AbstractCreateNewChessDiagramHyperLinkAdapter {
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected ICreationCommand getDiagramCreationCommand() {
+		return new RequirementDiagramCreateCommand();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected Package getTargetPackage(final Model pRootModel) {
+		// TODO Auto-generated method stub
+		return ChessPapyrusHelper.INSTANCE.getPackageFromModelByName(pRootModel,
+				ChessPapyrusHelper.MODEL_REQUIREMENT_VIEW_NAME);
+	}
+}
diff --git a/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/OpenImportUserModelDialogHyperLinkAdapter.java b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/OpenImportUserModelDialogHyperLinkAdapter.java
new file mode 100644
index 0000000..c3b38db
--- /dev/null
+++ b/org.eclipse.opencert.infra.dashboard/src/org/eclipse/opencert/infra/dashboard/pages/adapters/OpenImportUserModelDialogHyperLinkAdapter.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2018 ALL4TEC.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Thanh Liem PHAN (ALL4TEC) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.opencert.infra.dashboard.pages.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jface.window.Window;
+import org.eclipse.opencert.infra.dashboard.dialogs.PackageImportDialog;
+import org.eclipse.opencert.infra.dashboard.helpers.ChessPapyrusHelper;
+import org.eclipse.opencert.infra.dashboard.helpers.EclipseHelper;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.papyrus.uml.profile.ui.dialogs.ElementImportTreeSelectionDialog.ImportSpec;
+import org.eclipse.papyrus.uml.tools.importsources.PackageImportSourceDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.UMLFactory;
+
+/**
+ * A {@link HyperLinkAdapter} to open the {@link PackageImportDialog} dialog.
+ */
+public class OpenImportUserModelDialogHyperLinkAdapter extends AbstractOpenDialogHyperLinkAdapter {
+
+	/**
+	 * Default constructor.
+	 */
+	public OpenImportUserModelDialogHyperLinkAdapter() {
+		super();
+	}
+
+	/**
+	 * Open a dialog when the link is pressed.
+	 */
+	@Override
+	protected void openDialog() {
+		// Retrieve shell instance
+		Shell vShell = EclipseHelper.getActiveShell();
+
+		// Get the first Papyrus diagram editor
+		IMultiDiagramEditor vPapyrusEditor = EclipseHelper.getFirstPapyrusDiagramEditorPart();
+
+		// Get the root model
+		Model vRootModel = ChessPapyrusHelper.INSTANCE.getUmlModelFromDiagramEditor(vPapyrusEditor);
+
+		if (Objects.nonNull(vRootModel)) {
+			Map<String, String> vExtensionFilters = new LinkedHashMap<String, String>();
+			vExtensionFilters.put("*.uml", "UML (*.uml)"); //$NON-NLS-1$
+			vExtensionFilters.put("*.profile.uml", "UML Profiles (*.profile.uml)"); //$NON-NLS-1$ //$NON-NLS-2$
+			vExtensionFilters.put("*", "All (*)"); //$NON-NLS-1$ //$NON-NLS-2$
+
+			Collection<EObject> vSelections = new ArrayList<>();
+			vSelections.add(vRootModel);
+
+			Collection<Package> vPackages = PackageImportSourceDialog.open(vShell, "Select the models to import", //$NON-NLS-1$
+					vSelections, vExtensionFilters);
+
+			if (Objects.nonNull(vPackages) && !vPackages.isEmpty()) {
+				PackageImportDialog vPackageImportDialog = new PackageImportDialog(vShell, vPackages);
+
+				if (Window.OK == vPackageImportDialog.open()) {
+					Collection<ImportSpec<Package>> vResult = vPackageImportDialog.getResult();
+
+					for (ImportSpec<Package> vResultElement : vResult) {
+						Package vSelectedPackage = vResultElement.getElement();
+						switch (vResultElement.getAction()) {
+						case COPY:
+							handleCopyPackage(vSelectedPackage, vRootModel);
+							break;
+						case IMPORT:
+							handleImportPackage(vSelectedPackage, vRootModel);
+							break;
+						default:
+							handleLoadPackage(vSelectedPackage, vRootModel);
+							break;
+						}
+					}
+
+					// Then goto the active Papyrus editor
+					EclipseHelper.getActiveWorkbenchPage().activate(vPapyrusEditor);
+				}
+			}
+		} else {
+			// Otherwise, no Chess graphical editor is already opened, ask user to open one
+			ChessPapyrusHelper.INSTANCE.openNoActivePapyrusEditorMessageBox();
+		}
+	}
+
+	/**
+	 * Load the Package resource into the target package.
+	 *
+	 * @param pPackage The selected package to import
+	 * @param pTargetPackage The target package
+	 */
+	protected void handleLoadPackage(final Package pPackage, final EObject pTargetPackage) {
+		EMFHelper.reloadIntoContext(pPackage, pTargetPackage);
+	}
+
+	/**
+	 * Create a PackageImport in the target package, which refers to the selected package.
+	 *
+	 * @param pSelectedPackage The selected package
+	 * @param pTargetPackage The target package
+	 */
+	protected void handleImportPackage(final Package pSelectedPackage, final EObject pTargetPackage) {
+		PackageImport vPackageImport = UMLFactory.eINSTANCE.createPackageImport();
+
+		Package vImportedPackage = EMFHelper.reloadIntoContext(pSelectedPackage, pTargetPackage);
+
+		((Package) pTargetPackage).getPackageImports().add(vPackageImport);
+		vPackageImport.setImportedPackage(vImportedPackage);
+	}
+
+	/**
+	 * Create a copy of the selected package in the target package.
+	 *
+	 * @param pSelectedPackage The selected package
+	 * @param pTargetPackage The target package
+	 */
+	protected void handleCopyPackage(Package pSelectedPackage, final EObject pTargetPackage) {
+		// FIXME: Stereotype applications are not copied
+		((Package) pTargetPackage).getNestedPackages().add(EcoreUtil.copy(pSelectedPackage));
+	}
+}
