Bug 568834 - [PrivacyDesigner] add design plugins

- plugins to support privacy-by-design.

Change-Id: I0036495fb8bf8db38785da1b1b501daca8fe33e5
Signed-off-by: Gabriel Pedroza <gabriel.pedroza@cea.fr>
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/.project b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/.project
new file mode 100644
index 0000000..06da4a7
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.pdp4eng.designer.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/build.properties b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+               feature.properties
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.properties b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.properties
new file mode 100644
index 0000000..70e7520
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.properties
@@ -0,0 +1,30 @@
+###############################################################################
+# Copyright (c) 2012, 2016 CEA LIST, Christian W. Damus, and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+# "featureName" property - name of the feature
+featureName=PDP4Eng Designer feature
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project 
+
+# description property - text of the "Feature Description"
+description=This feature regroups all functions about GDPR designer
+################ end of description property ##################################
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2020 CEA LIST.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n
+################ end of copyright property ####################################
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.xml b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.xml
new file mode 100644
index 0000000..9ff6c8f
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.papyrus.pdp4eng.designer.feature"
+      label="%featureName"
+      version="1.0.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="2.0.2">
+
+  <description url="https://eclipse.org/papyrus/">
+      %description
+   </description>
+
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.papyrus.pdp4eng.common.feature" version="1.0.0.qualifier"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.controller"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.datastrategies"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.engine"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.libraries-patterns"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.processstrategies"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.profile"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.pdp4eng.designer.utils"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/pom.xml b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/pom.xml
new file mode 100644
index 0000000..1857021
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.papyrus.pdp4eng</groupId>
+		<artifactId>org.eclipse.papyrus.pdp4eng.feature</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.papyrus.pdp4eng.designer.feature</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-feature</packaging>
+
+	<name>pdp4eng designer feature</name>
+	<description>pdp4eng designer feature</description>
+</project>
\ No newline at end of file
diff --git a/feature/pom.xml b/feature/pom.xml
index dd39239..79c2d70 100644
--- a/feature/pom.xml
+++ b/feature/pom.xml
@@ -19,6 +19,6 @@
 	<modules>
 		<module>org.eclipse.papyrus.pdp4eng.common.feature</module>
 		<module>org.eclipse.papyrus.pdp4eng.req.feature</module>
-		<!--module>org.eclipse.papyrus.pdp4eng.designer.feature</module-->
+		<module>org.eclipse.papyrus.pdp4eng.designer.feature</module>
 	</modules>
 </project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.project
new file mode 100644
index 0000000..4ab62d8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.pdp4eng.designer.controller</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cacff42
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.controller;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.controller
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.commands;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.4.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.papyrus.requirements.sysml14.common;bundle-version="[0.7.0,1.0.0)",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.utils;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.uml.properties;bundle-version="[3.5.100,4.0.0)",
+ org.eclipse.papyrus.infra.properties.ui;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.profile;bundle-version="[1.0.0,2.0.0)"
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.controller.api,
+ org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 30, 2017</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/build.properties
new file mode 100644
index 0000000..af3cd05
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.properties,\
+               build.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/plugin.properties
new file mode 100644
index 0000000..fde393f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#	  Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design controller
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/pom.xml
new file mode 100644
index 0000000..ce93f97
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>org.eclipse.papyrus.pdp4eng</groupId>
+		<artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	<artifactId>org.eclipse.papyrus.pdp4eng.designer.controller</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+	
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/IModelTransfo.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/IModelTransfo.java
new file mode 100644
index 0000000..5b268da
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/IModelTransfo.java
@@ -0,0 +1,87 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.api;

+

+import org.eclipse.emf.common.command.Command;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.uml2.uml.Action;

+import org.eclipse.uml2.uml.Activity;

+import org.eclipse.uml2.uml.OpaqueAction;

+

+

+/**

+ * Interface that declares model transformation for Data

+ *

+ */

+public interface IModelTransfo {

+	/**

+	 * return a command to create an abstraction from a gieven Data

+	 * @param domain

+	 * @param data

+	 * @return  a command, it is never null

+	 */

+	public Command getAbstractionDataCommand(TransactionalEditingDomain domain, org.eclipse.uml2.uml.Element data);

+	

+	/**

+	 * Return a command that create a DFD in the design package (owner) from a DFD of the RequirementPackage 

+	 * @param domain domain to execute command

+	 * @param owner a package that contain the new DFD

+	 * @param reqSource the DFD source

+	 * @return a command

+	 */

+	public Command getCreateProcessModelFromReq(TransactionalEditingDomain domain, org.eclipse.uml2.uml.Package owner,org.eclipse.uml2.uml.Activity ReqDFDSource);

+

+	/**

+	 * Return a command that transform a process to a process call

+	 * @param domain in order to execute the command

+	 * @param process that will be transform into a call process

+	 * @return the command

+	 */

+	public Command getCallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction callProcess );

+	

+	/**

+	 * Return a command that transform a process (Action) to a process call

+	 * @param domain

+	 * @param process

+	 * @return

+	 */

+	public Command getActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess);

+	

+	/**

+	 * Return a command that transforms all the CallProcess within and Activity DFD to a Process (Activity)

+	 * @param domain

+	 * @param activityDFD

+	 * @return

+	 */

+	public Command getAllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD);

+

+	/**

+	 * Applies the PDPbDesign profile to an Activity diagram according to DFD definition

+	 * @param domain

+	 * @param activityDFD

+	 * @return

+	 */

+	public Command getApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD);

+	

+	/**

+	 * Instantiate a GDPR pattern to ensure consent over personal data processed 

+	 * @param domain

+	 * @param process

+	 * @return

+	 */

+	public Command getInstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity process);

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/ModelTransfoFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/ModelTransfoFactory.java
new file mode 100644
index 0000000..b9747af
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/ModelTransfoFactory.java
@@ -0,0 +1,73 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.api;

+

+import org.eclipse.emf.common.command.Command;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.papyrus.pdp4eng.designer.controller.internal.ModelTransfoFactoryImpl;

+import org.eclipse.uml2.uml.Action;

+import org.eclipse.uml2.uml.Activity;

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.OpaqueAction;

+import org.eclipse.uml2.uml.Package;

+

+/**

+ * this an implementation that must be used as API

+ *

+ */

+public class ModelTransfoFactory implements IModelTransfo{

+	private ModelTransfoFactoryImpl factoryImpl= new ModelTransfoFactoryImpl();

+

+	@Override

+	public Command getAbstractionDataCommand(TransactionalEditingDomain domain, Element data) {

+		return factoryImpl.getAbstractionDataCommand(domain, data);

+	}

+

+	@Override

+	public Command getCreateProcessModelFromReq(TransactionalEditingDomain domain, Package owner,Activity ReqDFDSource) {

+		return factoryImpl.getCreateProcessModelFromReq(domain, owner, ReqDFDSource);

+	}

+

+	@Override

+	public Command getCallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction callProcess) {

+		return factoryImpl.getCallProcessToProcessCommand(domain, callProcess);

+	}

+

+	@Override

+	public Command getActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess) {

+		// TODO Auto-generated method stub

+		return factoryImpl.getActionCallProcessToProcessCommand(domain, actionCallProcess);

+	}

+	

+	@Override

+	public Command getAllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD) {

+		// TODO Auto-generated method stub

+		return factoryImpl.getAllCallProcessToProcessCommand(domain, activityDFD);

+	}

+	

+	@Override

+	public Command getApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD) {

+		// TODO Auto-generated method stub

+		return factoryImpl.getApplyPDPbDProfileToActivityDFDCommand(domain, activityDFD);

+	}

+	

+	@Override

+	public Command getInstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity process) {

+		// TODO Auto-generated method stub

+		return factoryImpl.getInstantiateGDPRConsentPatternCommand(domain, process);

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AbstractDataCreateCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AbstractDataCreateCommand.java
new file mode 100644
index 0000000..372822c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AbstractDataCreateCommand.java
@@ -0,0 +1,52 @@
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.util.UMLUtil.StereotypeApplicationHelper;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class AbstractDataCreateCommand extends RecordingCommand {
+	protected NamedElement selectedElement;
+	private static int no = 0;
+
+	public AbstractDataCreateCommand(TransactionalEditingDomain domain, NamedElement selectedElements) {
+		super(domain, "AbstractDataCreateCommand");
+		this.selectedElement = selectedElements;
+	}
+
+	protected void createCompositeData(org.eclipse.uml2.uml.Package owner, String text) {
+		org.eclipse.uml2.uml.Class abstractData = owner.createOwnedClass(this.selectedElement.getName()+"_"+no, false);
+		StereotypeApplicationHelper stereotypeApplicationHelper = StereotypeApplicationHelper.getInstance(null);
+		stereotypeApplicationHelper.applyStereotype(abstractData, pdp4engDesignPackage.eINSTANCE.getCompositeData(),null);
+		((Classifier)selectedElement).createAssociation(true, AggregationKind.get(2),"data_target", 0, 1, abstractData, false, AggregationKind.get(0), "data_source", 1, 1);
+		no++;
+	}
+
+	@Override
+	protected void doExecute() {
+		createCompositeData(selectedElement.getNearestPackage(), "");
+	}
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ActionCallProcessToProcessCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ActionCallProcessToProcessCommand.java
new file mode 100644
index 0000000..8475209
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ActionCallProcessToProcessCommand.java
@@ -0,0 +1,154 @@
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.ArrayList;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelPackageNames;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class ActionCallProcessToProcessCommand extends RecordingCommand {
+	protected Action actionCallProcess;
+
+	public ActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess) {
+		super(domain, "Transform a call process (OpaqueAction or CallBehaviorAction) to a process (Activity)");
+		this.actionCallProcess = actionCallProcess;
+	}
+
+
+	@Override
+	protected void doExecute() {
+		
+		// Get DFD_L1 Package. If it is not found create the package.
+		Package DFDL1_Pkg = this.actionCallProcess.getModel().getNestedPackage(ModelPackageNames.DFD_L1_PackageName);
+		if (DFDL1_Pkg==null) {
+			actionCallProcess.getModel().createPackagedElement(ModelPackageNames.DFD_L1_PackageName, UMLPackage.eINSTANCE.getPackage());
+			DFDL1_Pkg = actionCallProcess.getModel().getNestedPackage(ModelPackageNames.DFD_L1_PackageName);
+		}
+		
+		// If the Action is an OpaqueAction then create a new CallBehaviorAction and set it as behavior of the new Activity
+		if (actionCallProcess instanceof org.eclipse.uml2.uml.OpaqueAction) {
+			Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+			newProcess.setName(actionCallProcess.getName());
+			DFDL1_Pkg.getPackagedElements().add(newProcess);
+			CallBehaviorAction callBehaviorAction=UMLFactory.eINSTANCE.createCallBehaviorAction();
+			actionCallProcess.getActivity().getOwnedNodes().add(callBehaviorAction);
+			callBehaviorAction.setName(actionCallProcess.getName());
+			callBehaviorAction.setBehavior(newProcess);	
+
+			// For each Input pin of the Action create a new ActivityParameterNode
+			// Each ActivityParameterNode is added to the new Activity
+			ArrayList<Pin> list=new ArrayList<Pin>();
+			for (InputPin input : actionCallProcess.getInputs()) {
+				ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+				parameter.setName(input.getName());
+				parameter.setType(input.getType());
+				newProcess.getOwnedNodes().add(parameter);
+				list.add(input);
+
+			}
+
+			// The Input pins in the OpaqueAction are added to the CallBehaviorAction 
+			for (Pin pin : list) {
+				callBehaviorAction.getArguments().add((InputPin)pin);	
+			}
+
+			list.clear();
+			// For each Output  pin of the OpaqueAction create a new ActivityParameterNode
+			// Each ActivityParameterNode is added to the new Activity
+			for (OutputPin output : actionCallProcess.getOutputs()) {
+				ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+				parameter.setName(output.getName());
+				parameter.setType(output.getType());
+				newProcess.getOwnedNodes().add(parameter);
+				list.add(output);
+
+			}
+
+			// The Output pins in the OpaqueAction are added to the CallBehaviorAction
+			for (Pin pin : list) {
+				callBehaviorAction.getResults().add((OutputPin)pin);
+			}
+
+			// The OpaqueAction can be replaced by the CallBehaviorAction
+			// The code that follows is intended to remove the OpaqueAction (Code to be reviewed!)
+			//actionCallProcess.getActivity().getOwnedNodes().remove(actionCallProcess);
+			//actionCallProcess.destroy();
+			EcoreUtil.delete(actionCallProcess);
+
+
+		} else {
+			// If the Action is already a CallBehaviorAction then create the ActivityParameterNodes
+			// A new Behavior (Activity) will be created if the CallBehaviorAction is not associated to a Behavior
+			// Or if the associated Behavior is not named as the CallBehaviorAction
+			if (actionCallProcess instanceof org.eclipse.uml2.uml.CallBehaviorAction && ( 
+					(((CallBehaviorAction) actionCallProcess).getBehavior()==null) || (
+							(((CallBehaviorAction) actionCallProcess).getBehavior()!=null) &&
+							!((CallBehaviorAction) actionCallProcess).getBehavior().getName().equals(actionCallProcess.getName())))) {
+
+				Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+				newProcess.setName(actionCallProcess.getName());
+				DFDL1_Pkg.getPackagedElements().add(newProcess);
+				
+				// The CallBehaviorAction and the associated Behavior (Activity) should have the same name
+				// Otherwise the Behavior is renamed as a candidate to be deleted (assistance to clean model)
+				if ((((CallBehaviorAction) actionCallProcess).getBehavior()!=null) &&
+						!((CallBehaviorAction) actionCallProcess).getBehavior().getName().equals(actionCallProcess.getName())) {
+					
+					Behavior behavior =((CallBehaviorAction) actionCallProcess).getBehavior();
+					behavior.setName("ToDelete_"+behavior.getName());	
+				}
+				
+				((CallBehaviorAction) actionCallProcess).setBehavior(newProcess);
+				
+				// For each Input pin of the Action create a new ActivityParameterNode
+				// Each ActivityParameterNode is added to the new Activity
+				for (InputPin input : actionCallProcess.getInputs()) {
+					ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+					parameter.setName(input.getName());
+					parameter.setType(input.getType());
+					newProcess.getOwnedNodes().add(parameter);
+				}
+
+				// For each Output pin of the OpaqueAction create a new ActivityParameterNode
+				// Each ActivityParameterNode is added to the new Activity
+				for (OutputPin output : actionCallProcess.getOutputs()) {
+					ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+					parameter.setName(output.getName());
+					parameter.setType(output.getType());
+					newProcess.getOwnedNodes().add(parameter);
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AllCallProcessToProcessCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AllCallProcessToProcessCommand.java
new file mode 100644
index 0000000..d624f23
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AllCallProcessToProcessCommand.java
@@ -0,0 +1,138 @@
+
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelProfileNames;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.ProfileApplication;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class AllCallProcessToProcessCommand extends RecordingCommand {
+
+	protected Activity activityDFD;
+	protected TransactionalEditingDomain domain;
+
+	public AllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+		super(domain, "Transform each call process (OpaqueAction or CallBehaviorAction) within the Activity into a process");
+		this.activityDFD = activityDFD;
+		this.domain=domain;
+	}
+	
+	@Override
+	protected void doExecute() {
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+			EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+			if (elementList!=null && PDPbDprofile!=null) {
+				for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+					Element element = elementListIt.next();
+					EClass elementClass = element.eClass();
+					System.out.printf("===>"+elementClass.getName()+"\n");
+					if (elementClass!=null ) {
+						String className = elementClass.getName();
+						switch (className){
+
+						case "CallBehaviorAction":
+							if (element instanceof CallBehaviorAction) {
+								if (element != null) {
+									ActionCallProcessToProcessCommand command = new ActionCallProcessToProcessCommand(domain, ((Action) element));
+									if (command.canExecute()) {
+										command.execute();
+									}
+								}
+							}
+							break;
+						case "OpaqueAction":
+							if (element instanceof OpaqueAction) {
+								if (element != null) {
+									ActionCallProcessToProcessCommand command = new ActionCallProcessToProcessCommand(domain, ((Action) element));
+									if (command.canExecute()) {
+										command.execute();
+									}
+								}
+							}
+							break;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Verify whether the needed profiles have been already loaded in the model
+	 * @param profileList
+	 * @return
+	 */
+	public boolean verifyProfilesApplied(EList<Profile> profileList) {
+		boolean found = false; 
+		int noProfiles = 0;
+		for (Iterator<Profile> profileListIt = profileList.iterator(); profileListIt.hasNext() && noProfiles!=2;) {
+			Profile profile = profileListIt.next();
+			if (profile!=null) {
+				String profileName = profile.getName(); 
+				switch (profileName) {
+				case "pdp4engDesign": 
+					noProfiles++;
+					break;
+
+				case "pdp4engCommonGDPR":
+					noProfiles++;
+					break;
+
+				}
+			}
+		}
+		if (noProfiles==2) {
+			found=true;
+		}
+		return found;
+	}
+	
+	
+	/**
+	 * Return the profile with the given name or null elsewhere
+	 * @param profileName
+	 * @return
+	 */
+	public Profile getProfile(String profileName) {
+		Profile profile = null;
+		for (ProfileApplication profileApplication : this.activityDFD.getModel().getProfileApplications()) {
+            profile = profileApplication.getAppliedProfile();
+            if (profile.getName().equals(profileName)){
+            	return profile;
+            }
+        }
+		return profile;
+	}
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ApplyPDPbDProfileToActivityDFDCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ApplyPDPbDProfileToActivityDFDCommand.java
new file mode 100644
index 0000000..e537d57
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ApplyPDPbDProfileToActivityDFDCommand.java
@@ -0,0 +1,157 @@
+
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelProfileNames;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.ProfileApplication;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class ApplyPDPbDProfileToActivityDFDCommand extends RecordingCommand {
+
+	protected Activity activityDFD;
+
+	public ApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+		super(domain, "Apply the PDPbD Profile (and profile dependencies) for privacy analysis");
+		this.activityDFD = activityDFD;
+	}
+
+
+	@Override
+	protected void doExecute() {
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+			EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+			if (elementList!=null && PDPbDprofile!=null) {
+				for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+					Element element = elementListIt.next();
+					EClass elementClass = element.eClass();
+					System.out.printf("===>"+elementClass.getName()+"\n");
+					if (elementClass!=null ) {
+						String className = elementClass.getName();
+						switch (className){
+						case "Activity":
+							Stereotype activityStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_Process);
+							if (activityStype!=null) {
+								UMLUtil.safeApplyStereotype(element, activityStype);
+							}
+							break;
+						case "CallBehaviorAction":
+							Stereotype processCallStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_CallProcess);
+							if (processCallStype!=null) {
+								UMLUtil.safeApplyStereotype(element, processCallStype);
+							}
+							break;
+						case "OpaqueAction":
+							Stereotype processCallStype1 = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_CallProcess);
+							if (processCallStype1!=null) {
+								UMLUtil.safeApplyStereotype(element, processCallStype1);
+							}
+							break;
+						case "DataStoreNode":
+							Stereotype dataStoreStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_DataStore);
+							if (dataStoreStype!=null) {
+								UMLUtil.safeApplyStereotype(element, dataStoreStype);
+							}
+							break;
+						case "ActivityParameterNode":
+							Stereotype externalEntityStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_ExternalEntity);
+							if (externalEntityStype!=null) {
+								UMLUtil.safeApplyStereotype(element, externalEntityStype);
+							}
+							break;
+						case "InputPin":
+							Stereotype dataInputStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_DataInput);
+							if (dataInputStype!=null) {
+								UMLUtil.safeApplyStereotype(element, dataInputStype);
+							}
+							break;
+						case "OutputPin":
+							Stereotype dataOutputStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_DataOutput);
+							if (dataOutputStype!=null) {
+								UMLUtil.safeApplyStereotype(element, dataOutputStype);
+							}
+							break;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Verify whether the needed profiles have been already loaded in the model
+	 * @param profileList
+	 * @return
+	 */
+	public boolean verifyProfilesApplied(EList<Profile> profileList) {
+		boolean found = false; 
+		int noProfiles = 0;
+		for (Iterator<Profile> profileListIt = profileList.iterator(); profileListIt.hasNext() && noProfiles!=2;) {
+			Profile profile = profileListIt.next();
+			if (profile!=null) {
+				String profileName = profile.getName(); 
+				switch (profileName) {
+				case "pdp4engDesign": 
+					noProfiles++;
+					break;
+
+				case "pdp4engCommonGDPR":
+					noProfiles++;
+					break;
+
+				}
+			}
+		}
+		if (noProfiles==2) {
+			found=true;
+		}
+		return found;
+	}
+	
+	
+	/**
+	 * Return the profile with the given name or null elsewhere
+	 * @param profileName
+	 * @return
+	 */
+	public Profile getProfile(String profileName) {
+		Profile profile = null;
+		for (ProfileApplication profileApplication : this.activityDFD.getModel().getProfileApplications()) {
+            profile = profileApplication.getAppliedProfile();
+            if (profile.getName().equals(profileName)){
+            	return profile;
+            }
+        }
+		return profile;
+	}
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/CallProcessToProcessCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/CallProcessToProcessCommand.java
new file mode 100644
index 0000000..680c01c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/CallProcessToProcessCommand.java
@@ -0,0 +1,98 @@
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.ArrayList;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.UMLFactory;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class CallProcessToProcessCommand extends RecordingCommand {
+	protected OpaqueAction callProcess;
+
+	public CallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction callProcess) {
+		super(domain, "Transfor a call process (OpaqueAction) to a process (CallBehaviorAction + Activity)");
+		this.callProcess = callProcess;
+	}
+
+
+	@Override
+	protected void doExecute() {
+		// Create a new Activity within the root package containing the OpaqueAction 
+		Package owner= callProcess.getNearestPackage();
+		Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+		newProcess.setName(callProcess.getName());
+		owner.getPackagedElements().add(newProcess);
+		// Create a new CallBehaviorAction and set it as behavior of the new Activity
+		CallBehaviorAction callBehaviorAction=UMLFactory.eINSTANCE.createCallBehaviorAction();
+		callProcess.getActivity().getOwnedNodes().add(callBehaviorAction);
+		callBehaviorAction.setName(callProcess.getName());
+		callBehaviorAction.setBehavior(newProcess);
+
+		// For each Input pin of the OpaqueAction create a new ActivityParameterNode
+		// Each ActivityParameterNode is added to the new Activity
+		ArrayList<Pin> list=new ArrayList<Pin>();
+		for (InputPin input : callProcess.getInputValues()) {
+			ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+			parameter.setName(input.getName());
+			parameter.setType(input.getType());
+			newProcess.getOwnedNodes().add(parameter);
+			list.add(input);
+
+		}
+		// The Input pins in the OpaqueAction are added to the CallBehaviorAction
+		// The OpaqueAction can be replaced by the CallBehaviorAction  
+		for (Pin pin : list) {
+			callBehaviorAction.getArguments().add((InputPin)pin);	
+		}
+		list.clear();
+		// For each Output  pin of the OpaqueAction create a new ActivityParameterNode
+		// Each ActivityParameterNode is added to the new Activity
+		for (OutputPin output : callProcess.getOutputValues()) {
+			ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+			parameter.setName(output.getName());
+			parameter.setType(output.getType());
+			newProcess.getOwnedNodes().add(parameter);
+			list.add(output);
+
+		}
+		// The Output pins in the OpaqueAction are added to the CallBehaviorAction
+		// The OpaqueAction can be replaced by the CallBehaviorAction
+		for (Pin pin : list) {
+			callBehaviorAction.getResults().add((OutputPin)pin);
+		}
+		
+		// The code that follows is intended to remove the OpaqueAction
+		// Code to be reviewed!!
+		callProcess.getActivity().getOwnedNodes().remove(callProcess);
+		//callProcess.destroy();
+		
+	}
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/InstantiateGDPRConsentPatternCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/InstantiateGDPRConsentPatternCommand.java
new file mode 100644
index 0000000..b8090cc
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/InstantiateGDPRConsentPatternCommand.java
@@ -0,0 +1,40 @@
+
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.uml.properties.profile.ui.dialogs.ChooseSetStereotypeDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Activity;
+
+public class InstantiateGDPRConsentPatternCommand extends RecordingCommand {
+	
+	protected Activity Process;
+
+	public InstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity Process) {
+		super(domain, "Instantiate a Consent Pattern based upon the information provided by the engineer");
+		this.Process = Process;
+	}
+	
+	@Override
+	protected void doExecute() {
+		ChooseSetStereotypeDialog dialog = new ChooseSetStereotypeDialog(Display.getCurrent().getActiveShell(), Process);
+		dialog.open();
+		System.out.printf("==>>"+Process.toString());
+	}
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ModelTransfoFactoryImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ModelTransfoFactoryImpl.java
new file mode 100644
index 0000000..a55cdd4
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ModelTransfoFactoryImpl.java
@@ -0,0 +1,84 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;

+

+import org.eclipse.emf.common.command.Command;

+import org.eclipse.emf.common.command.IdentityCommand;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.papyrus.pdp4eng.designer.controller.api.IModelTransfo;

+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;

+import org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation.ProcessDFDCreateCommand;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;

+import org.eclipse.uml2.uml.Action;

+import org.eclipse.uml2.uml.Activity;

+import org.eclipse.uml2.uml.NamedElement;

+import org.eclipse.uml2.uml.OpaqueAction;

+import org.eclipse.uml2.uml.Package;

+import org.eclipse.uml2.uml.util.UMLUtil;

+

+/**

+ * This factory is an implementation of a factory that gives command to execute model transformation

+ * to used it see {@link ModelTransfoFactory}

+ */

+public class ModelTransfoFactoryImpl  implements IModelTransfo{

+	

+	/**

+	 * return a command to create an abstraction from a given Data

+	 * @param domain

+	 * @param data

+	 * @return  a command, it is never null

+	 */

+	public Command getAbstractionDataCommand(TransactionalEditingDomain domain, org.eclipse.uml2.uml.Element data) {

+			if( data  instanceof NamedElement) {

+				Data appliedStereotypedata= (Data)UMLUtil.getStereotypeApplication(data, Data.class);

+				if( appliedStereotypedata!=null) {

+					return new AbstractDataCreateCommand(domain, (NamedElement)data);

+				}

+			}

+		return IdentityCommand.INSTANCE;

+		

+	}

+

+	@Override

+	public Command getCreateProcessModelFromReq(TransactionalEditingDomain domain, Package owner,Activity ReqDFDSource) {

+		return new ProcessDFDCreateCommand(domain, owner,ReqDFDSource);

+	}

+

+	@Override

+	public Command getCallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction process) {

+		return new CallProcessToProcessCommand(domain, process);

+	}

+	

+	@Override

+	public Command getActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess) {

+		return new ActionCallProcessToProcessCommand(domain, actionCallProcess);

+	}

+	

+	public Command getAllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD) {

+		return new AllCallProcessToProcessCommand(domain, activityDFD);

+	}

+	

+	@Override

+	public Command getApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD) {

+		return new ApplyPDPbDProfileToActivityDFDCommand(domain, activityDFD);

+	}

+

+	@Override

+	public Command getInstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity process) {

+		return new InstantiateGDPRConsentPatternCommand(domain, process);

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ActivityProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ActivityProcessCreation.java
new file mode 100644
index 0000000..b722da0
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ActivityProcessCreation.java
@@ -0,0 +1,51 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import java.util.Iterator;

+

+import org.eclipse.uml2.uml.Activity;

+import org.eclipse.uml2.uml.ActivityEdge;

+import org.eclipse.uml2.uml.ActivityNode;

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.NamedElement;

+import org.eclipse.uml2.uml.Package;

+import org.eclipse.uml2.uml.UMLFactory;

+

+public class ActivityProcessCreation implements IProcessCreation {

+	

+	

+

+	@Override

+	public Element createElement(Element source, Element owner) {

+		

+		if( owner instanceof Package) {

+			Activity anActivity= UMLFactory.eINSTANCE.createActivity();

+			((Package)owner).getPackagedElements().add(anActivity);

+			anActivity.setName(((Activity)source).getName());

+			for (Iterator<ActivityNode> iterator = ((Activity)source).getNodes().iterator(); iterator.hasNext();) {

+				ProcessBuilder.getInstance().createElement(iterator.next(), anActivity);

+			}

+			for (Iterator<ActivityEdge> iterator = ((Activity)source).getEdges().iterator(); iterator.hasNext();) {

+				ProcessBuilder.getInstance().createElement(iterator.next(), anActivity);

+			}

+			ProcessBuilder.createSatisfy((NamedElement)source, (NamedElement)anActivity);

+			return anActivity;

+		}

+		return null;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataProcessCreation.java
new file mode 100644
index 0000000..ce9eb01
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataProcessCreation.java
@@ -0,0 +1,44 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import org.eclipse.uml2.uml.Class;

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.InputPin;

+import org.eclipse.uml2.uml.OpaqueAction;

+import org.eclipse.uml2.uml.UMLFactory;

+import org.eclipse.uml2.uml.UMLPackage;

+

+public class DataProcessCreation implements IProcessCreation {

+

+

+

+	@Override

+	public Element createElement(Element data, Element pin) {

+		if( data instanceof org.eclipse.uml2.uml.Class) {

+			org.eclipse.uml2.uml.Class aClass=(Class)pin.getNearestPackage().getOwnedType((((org.eclipse.uml2.uml.Class)data).getName()), false, UMLPackage.eINSTANCE.getClass_(), false);

+			if(aClass==null) {

+				aClass= UMLFactory.eINSTANCE.createClass();

+				pin.getNearestPackage().getPackagedElements().add(aClass);

+			}

+			((org.eclipse.uml2.uml.Pin)pin).setType(aClass);

+			aClass.setName(((org.eclipse.uml2.uml.Class)data).getName());

+			return aClass;

+		}

+		return null;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataStoreProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataStoreProcessCreation.java
new file mode 100644
index 0000000..e81d640
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataStoreProcessCreation.java
@@ -0,0 +1,64 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import org.eclipse.uml2.uml.Activity;

+import org.eclipse.uml2.uml.ActivityParameterNode;

+import org.eclipse.uml2.uml.DataStoreNode;

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.NamedElement;

+import org.eclipse.uml2.uml.UMLFactory;

+

+public class DataStoreProcessCreation implements IProcessCreation {

+

+

+

+	private boolean seekParameter;

+	private boolean sourceParameter;

+	@Override

+	public Element createElement(Element dataStore, Element activity) {

+		if( dataStore instanceof DataStoreNode) {

+			DataStoreNode dataStoreNode=(DataStoreNode)dataStore;

+			if( dataStoreNode.getIncomings().size()==0 && sourceParameter) {

+				ActivityParameterNode activityParameterNode= UMLFactory.eINSTANCE.createActivityParameterNode();

+				((Activity) activity).getOwnedNodes().add(activityParameterNode);

+				activityParameterNode.setName(((DataStoreNode)dataStore).getName());

+				ProcessBuilder.createSatisfy((NamedElement)activityParameterNode, (NamedElement)dataStore);

+			}

+			else if( dataStoreNode.getOutgoings().size()==0&& seekParameter) {

+				ActivityParameterNode activityParameterNode= UMLFactory.eINSTANCE.createActivityParameterNode();

+				((Activity) activity).getOwnedNodes().add(activityParameterNode);

+				activityParameterNode.setName(((DataStoreNode)dataStore).getName());

+				ProcessBuilder.createSatisfy((NamedElement)activityParameterNode, (NamedElement)dataStore);

+			}

+			else {

+				DataStoreNode aDataStoreNode= UMLFactory.eINSTANCE.createDataStoreNode();

+				((Activity) activity).getOwnedNodes().add(aDataStoreNode);

+				aDataStoreNode.setName(((DataStoreNode)dataStore).getName());

+				ProcessBuilder.createSatisfy((NamedElement)aDataStoreNode, (NamedElement)dataStore);

+				return aDataStoreNode;

+			}

+		}

+		return null;

+	}

+	

+	public void generateParameterForSeek(boolean value) {

+		this.seekParameter=value;

+	}

+	public void generateParameterForSource(boolean value) {

+		this.sourceParameter=value;

+	}

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/IProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/IProcessCreation.java
new file mode 100644
index 0000000..c7b910a
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/IProcessCreation.java
@@ -0,0 +1,29 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import org.eclipse.uml2.uml.Element;

+

+public interface IProcessCreation {

+

+	/**

+	 * create a element from the source inside the owner.

+	 * @param source the source of the creation

+	 * @param owner the owner of the element

+	 * @return result of the creation

+	 */

+	public Element createElement(Element source, Element owner);

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/InputPinProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/InputPinProcessCreation.java
new file mode 100644
index 0000000..31c4d85
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/InputPinProcessCreation.java
@@ -0,0 +1,42 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.InputPin;

+import org.eclipse.uml2.uml.OpaqueAction;

+import org.eclipse.uml2.uml.Pin;

+import org.eclipse.uml2.uml.UMLFactory;

+

+public class InputPinProcessCreation implements IProcessCreation {

+

+

+

+	@Override

+	public Element createElement(Element inputPin, Element opaqueAction) {

+		if( inputPin instanceof InputPin) {

+			InputPin anInputPin= UMLFactory.eINSTANCE.createInputPin();

+			((OpaqueAction) opaqueAction).getInputValues().add(anInputPin);

+			anInputPin.setName(((InputPin)inputPin).getName());

+			if( ((Pin)inputPin).getType()!=null) {

+				ProcessBuilder.getInstance().createElement(((Pin)inputPin).getType(), anInputPin);

+			}

+			return anInputPin;

+		}

+		return null;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ObjectFlowProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ObjectFlowProcessCreation.java
new file mode 100644
index 0000000..ffe3b79
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ObjectFlowProcessCreation.java
@@ -0,0 +1,68 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import org.eclipse.uml2.uml.Activity;

+import org.eclipse.uml2.uml.ActivityNode;

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.InputPin;

+import org.eclipse.uml2.uml.NamedElement;

+import org.eclipse.uml2.uml.ObjectFlow;

+import org.eclipse.uml2.uml.OpaqueAction;

+import org.eclipse.uml2.uml.OutputPin;

+import org.eclipse.uml2.uml.UMLFactory;

+

+public class ObjectFlowProcessCreation implements IProcessCreation {

+

+

+

+	@Override

+	public Element createElement(Element objectFlow, Element activity) {

+		if( objectFlow instanceof ObjectFlow) {

+

+			ObjectFlow anObjectFlow= UMLFactory.eINSTANCE.createObjectFlow();

+			((Activity)activity).getEdges().add(anObjectFlow);

+			//set source

+			ActivityNode sourceNode=((ObjectFlow)objectFlow).getSource();

+			if(sourceNode instanceof OutputPin) {

+				ActivityNode OpaqueBehaviorSource= (ActivityNode)((OutputPin)sourceNode).getOwner();

+				OpaqueAction opaqueActionResult= (OpaqueAction) ((Activity)activity).getNode(OpaqueBehaviorSource.getName());

+				OutputPin outputPinResult= opaqueActionResult.getOutputValue(sourceNode.getName(), null);

+				anObjectFlow.setSource(outputPinResult);

+			}

+			else {

+				ActivityNode opaqueActionResult= (ActivityNode) ((Activity)activity).getNode(sourceNode.getName());

+				anObjectFlow.setSource(opaqueActionResult);

+			}

+			//set target

+			ActivityNode targetNode=((ObjectFlow)objectFlow).getTarget();

+			if(targetNode instanceof InputPin) {

+				ActivityNode OpaqueBehaviorSource= (ActivityNode)((InputPin)targetNode).getOwner();

+				OpaqueAction opaqueActionResult= (OpaqueAction) ((Activity)activity).getNode(OpaqueBehaviorSource.getName());

+				InputPin inputPinResult= opaqueActionResult.getInputValue(targetNode.getName(), null);

+				anObjectFlow.setTarget(inputPinResult);

+			}

+			else {

+				ActivityNode opaqueActionResult= (ActivityNode) ((Activity)activity).getNode(targetNode.getName());

+				anObjectFlow.setTarget(opaqueActionResult);

+			}

+			ProcessBuilder.createSatisfy((NamedElement)anObjectFlow, (NamedElement)objectFlow);

+			return anObjectFlow;

+		}

+		return null;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OpaqueActionProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OpaqueActionProcessCreation.java
new file mode 100644
index 0000000..4fb93e3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OpaqueActionProcessCreation.java
@@ -0,0 +1,50 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import java.util.Iterator;

+

+import org.eclipse.uml2.uml.Activity;

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.InputPin;

+import org.eclipse.uml2.uml.NamedElement;

+import org.eclipse.uml2.uml.OpaqueAction;

+import org.eclipse.uml2.uml.OutputPin;

+import org.eclipse.uml2.uml.UMLFactory;

+

+public class OpaqueActionProcessCreation implements IProcessCreation {

+	

+	

+

+	@Override

+	public Element createElement(Element opaqueAction, Element activity) {

+		if( activity instanceof Activity) {

+			OpaqueAction anOpaqueAction= UMLFactory.eINSTANCE.createOpaqueAction();

+			((Activity) activity).getOwnedNodes().add(anOpaqueAction);

+			anOpaqueAction.setName(((OpaqueAction)opaqueAction).getName());

+			for (Iterator<InputPin> iterator = ((OpaqueAction)opaqueAction).getInputValues().iterator(); iterator.hasNext();) {

+				ProcessBuilder.getInstance().createElement(iterator.next(), anOpaqueAction);

+			}

+			for (Iterator<OutputPin> iterator = ((OpaqueAction)opaqueAction).getOutputValues().iterator(); iterator.hasNext();) {

+				ProcessBuilder.getInstance().createElement(iterator.next(), anOpaqueAction);

+			}

+			ProcessBuilder.createSatisfy((NamedElement)anOpaqueAction, (NamedElement)opaqueAction);

+			return anOpaqueAction;

+		}

+		return null;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OutputPinProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OutputPinProcessCreation.java
new file mode 100644
index 0000000..0c9a44f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OutputPinProcessCreation.java
@@ -0,0 +1,42 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.OpaqueAction;

+import org.eclipse.uml2.uml.OutputPin;

+import org.eclipse.uml2.uml.Pin;

+import org.eclipse.uml2.uml.UMLFactory;

+

+public class OutputPinProcessCreation implements IProcessCreation {

+

+

+

+	@Override

+	public Element createElement(Element outputPin, Element opaqueAction) {

+		if( outputPin instanceof OutputPin) {

+			OutputPin anOutputPin= UMLFactory.eINSTANCE.createOutputPin();

+			((OpaqueAction) opaqueAction).getOutputValues().add(anOutputPin);

+			anOutputPin.setName(((OutputPin)outputPin).getName());

+			if( ((Pin)outputPin).getType()!=null) {

+				ProcessBuilder.getInstance().createElement(((Pin)outputPin).getType(), anOutputPin);

+			}

+			return anOutputPin;

+		}

+		return null;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessBuilder.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessBuilder.java
new file mode 100644
index 0000000..3222da1
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessBuilder.java
@@ -0,0 +1,77 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+

+import java.util.HashMap;

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.papyrus.requirements.sysml14.common.I_SysMLStereotype;

+import org.eclipse.uml2.uml.Abstraction;

+import org.eclipse.uml2.uml.Element;

+import org.eclipse.uml2.uml.NamedElement;

+import org.eclipse.uml2.uml.Stereotype;

+import org.eclipse.uml2.uml.UMLFactory;

+import org.eclipse.uml2.uml.UMLPackage;

+

+public class ProcessBuilder implements IProcessCreation {

+	private HashMap<EClass, IProcessCreation> processCreations= new HashMap<EClass, IProcessCreation>();

+	private  static  ProcessBuilder builder=null;

+	public static ProcessBuilder getInstance() {

+		if( builder==null) {

+			builder= new ProcessBuilder();

+		}

+		return builder;

+	}

+

+	

+	private ProcessBuilder() {

+		processCreations.put(UMLPackage.eINSTANCE.getActivity(), new ActivityProcessCreation());

+		processCreations.put(UMLPackage.eINSTANCE.getOpaqueAction(), new OpaqueActionProcessCreation());

+		processCreations.put(UMLPackage.eINSTANCE.getInputPin(), new InputPinProcessCreation());

+		processCreations.put(UMLPackage.eINSTANCE.getOutputPin(), new OutputPinProcessCreation());

+		processCreations.put(UMLPackage.eINSTANCE.getDataStoreNode(), new DataStoreProcessCreation());

+		processCreations.put(UMLPackage.eINSTANCE.getObjectFlow(), new ObjectFlowProcessCreation());

+		processCreations.put(UMLPackage.eINSTANCE.getClass_(), new DataProcessCreation());

+

+	}

+	 public HashMap<EClass, IProcessCreation> getProcessTransfo(){

+		 return processCreations;

+	 }

+	@Override

+	public Element createElement(Element source, Element owner) {

+		for (Iterator<EClass> keyIterator = processCreations.keySet().iterator(); keyIterator.hasNext();) {

+			EClass currentEclass = (EClass) keyIterator.next();

+			if (currentEclass.isInstance(source)) {

+				return processCreations.get(currentEclass).createElement(source, owner);

+			}

+		}

+		return null;

+	}

+

+	public static void createSatisfy(NamedElement source, NamedElement target) {

+		Abstraction theAbstraction = UMLFactory.eINSTANCE.createAbstraction();

+		source.getNearestPackage().getPackagedElements().add(theAbstraction);

+		theAbstraction.getSuppliers().add(target);

+		theAbstraction.getClients().add(source);

+		theAbstraction.setName("Satisfies_" + target.getName());

+		Stereotype satisfyStereotype = theAbstraction.getApplicableStereotype(I_SysMLStereotype.SATISFY_STEREOTYPE);

+		if(satisfyStereotype!=null) {

+			theAbstraction.applyStereotype(satisfyStereotype);

+		}

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessDFDCreateCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessDFDCreateCommand.java
new file mode 100644
index 0000000..c3d009e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessDFDCreateCommand.java
@@ -0,0 +1,54 @@
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class ProcessDFDCreateCommand extends RecordingCommand {
+	protected NamedElement selectedElement;
+	private Package owner;
+	private Activity reqDFDSource;
+
+	public ProcessDFDCreateCommand(TransactionalEditingDomain domain, Package owner,Activity ReqDFDSource) {
+		super(domain, "AbstractDataCreateCommand");
+		this.owner=owner;
+		this.reqDFDSource=ReqDFDSource;
+	}
+
+	
+
+	@Override
+	protected void doExecute() {
+		RulesInformation rulesInformation= new RulesInformation(new Shell());
+		DataStoreProcessCreation dataStoreProcessCreation= new DataStoreProcessCreation();
+		rulesInformation.open();
+		dataStoreProcessCreation.generateParameterForSeek(rulesInformation.generateSeekAsParameter());
+		dataStoreProcessCreation.generateParameterForSource(rulesInformation.generateSourceAsParameter());
+		ProcessBuilder.getInstance().getProcessTransfo().put(UMLPackage.eINSTANCE.getDataStoreNode(), dataStoreProcessCreation);
+		ProcessBuilder.getInstance().createElement(this.reqDFDSource, this.owner);
+	}
+	
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/RulesInformation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/RulesInformation.java
new file mode 100644
index 0000000..61ab8a0
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/RulesInformation.java
@@ -0,0 +1,116 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.events.SelectionAdapter;

+import org.eclipse.swt.events.SelectionEvent;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Button;

+import org.eclipse.swt.widgets.Dialog;

+import org.eclipse.swt.widgets.Display;

+import org.eclipse.swt.widgets.Shell;

+

+class RulesInformation extends Dialog {

+

+  private boolean seekParameter=false;

+  private boolean sourceParameter=false;

+  

+  public RulesInformation(Shell parent) {

+    this(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);

+  }

+

+  public RulesInformation(Shell parent, int style) {

+    super(parent, style);

+

+  }

+

+  public void open() {

+    Shell shell = new Shell(getParent(), getStyle());

+    shell.setText("Rules generation");

+    shell.setSize(400,200);

+    createContents(shell);

+    shell.pack();

+    shell.open();

+    Display display = getParent().getDisplay();

+    while (!shell.isDisposed()) {

+      if (!display.readAndDispatch()) {

+        display.sleep();

+      }

+    }

+  }

+

+  public boolean generateSeekAsParameter() {

+	  return seekParameter;

+  }

+  public boolean generateSourceAsParameter() {

+	  return sourceParameter;

+	  

+  }

+  private void createContents(final Shell shell) {

+    shell.setLayout(new GridLayout(2, true));

+

+    GridData data = new GridData();

+    

+    Button sourceDataButton = new Button (shell, SWT.CHECK);

+	sourceDataButton.setText("Generate a ParameterNode for each source DataStore node");

+	sourceDataButton.setSelection(true);

+	data = new GridData(GridData.FILL_HORIZONTAL);

+    data.horizontalSpan = 2;

+	sourceDataButton.setLayoutData(data);

+

+	Button seekDataButton = new Button (shell, SWT.CHECK);

+	seekDataButton.setText("Generate a ParameterNode for each seek DataStore node");

+	seekDataButton.setSelection(true);

+	data = new GridData(GridData.FILL_HORIZONTAL);

+    data.horizontalSpan = 2;

+	seekDataButton.setLayoutData(data);

+

+	

+

+    Button ok = new Button(shell, SWT.PUSH);

+    ok.setText("OK");

+    data = new GridData(GridData.FILL_HORIZONTAL);

+    ok.setLayoutData(data);

+    ok.addSelectionListener(new SelectionAdapter() {

+      public void widgetSelected(SelectionEvent event) {

+        

+        seekParameter=seekDataButton.getSelection();

+        sourceParameter=sourceDataButton.getSelection();

+        shell.close();

+      }

+    });

+

+

+    shell.setDefaultButton(ok);

+  }

+  public static void main(String[] args) {

+	    Display display = new Display();

+	    Shell shell = new Shell(display);

+	    shell.setSize(400, 100);

+

+	    RulesInformation dlg = new RulesInformation(shell);

+	    dlg.open();

+

+	    while (!shell.isDisposed()) {

+	      if (!display.readAndDispatch()) {

+	        display.sleep();

+	      }

+	    }

+	    display.dispose();

+	  }

+}

+

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.project
new file mode 100644
index 0000000..1358cae
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.pdp4eng.designer.datastrategies</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..472dc29
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.datastrategies;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.strategies
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.papyrus.pdp4eng.designer.engine;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.1,2.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.119.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.117.0,4.0.0)"
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.datastrategies.Activator
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.datastrategies
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 30, 2017</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/build.properties
new file mode 100644
index 0000000..0dc34f7
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.properties
new file mode 100644
index 0000000..539400c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#	  Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design data strategies
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.xml
new file mode 100644
index 0000000..5de9ef3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+<extension
+         point="org.eclipse.ui.startup">
+      <startup
+            class="org.eclipse.papyrus.pdp4eng.designer.datastrategies.Activator"></startup>
+   </extension>
+
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/pom.xml
new file mode 100644
index 0000000..ddd7820
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>org.eclipse.papyrus.pdp4eng</groupId>
+		<artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	<artifactId>org.eclipse.papyrus.pdp4eng.designer.datastrategies</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+	
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/Activator.java
new file mode 100644
index 0000000..00ef80b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/Activator.java
@@ -0,0 +1,66 @@
+/**

+ * Copyright (c) 2019 CEA LIST.

+ * 

+ * All rights reserved. This program and the accompanying materials

+ * are the property of the CEA. 

+ * Any use is subject to specific agreement with the CEA.

+ * Contributors:

+ * 

+ * 		Patrick Tessier (CEA LIST) - Initial API and implementation

+ * 		Gabriel Pedroza (CEA LIST) - API extensions and modifications

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.datastrategies;

+

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.CatalogFactory;

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.StrategyEngineFactory;

+import org.eclipse.ui.IStartup;

+import org.eclipse.ui.plugin.AbstractUIPlugin;

+import org.osgi.framework.BundleContext;

+

+

+

+

+public class Activator extends AbstractUIPlugin implements  IStartup{

+	// The plug-in ID

+	public static final String pluginId = "org.eclipse.papyrus.pdp4eng.designer.datastrategies";

+	// The shared instance

+	private static Activator plugin;

+

+	@Override

+	public void start(BundleContext context) throws Exception {

+		super.start(context);

+		Activator.plugin = this;

+		

+		StrategyEngineFactory engineFactory= StrategyEngineFactory.getInstance();

+		CatalogFactory catalogFactory= new CatalogFactory();

+		IStrategyCatalog catalog=catalogFactory.createCatalog("Data-oriented Strategies");

+		catalog.addStrategy(new KanonymityStrategy());

+		engineFactory.getCurrentEngine().connectACatalog(catalog);

+		//System.out.printf(catalog.toString());

+		

+	}

+

+	@Override

+	public void stop(BundleContext context) throws Exception {

+		Activator.plugin = null;

+		super.stop(context);

+

+	}

+

+	@Override

+	public void earlyStartup() {

+		// TODO Auto-generated method stub

+

+	}

+	/**

+	 * Returns the shared instance

+	 *

+	 * @return the shared instance

+	 */

+	public static Activator getDefault() {

+		return Activator.plugin;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/KanonymityStrategy.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/KanonymityStrategy.java
new file mode 100644
index 0000000..9443a6c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/KanonymityStrategy.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA. 
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ * 
+ * 		Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ * 		Patrick Tessier (CEA LIST) - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.datastrategies.command.KAnonymityCommand;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.uml2.uml.Element;
+
+public class KanonymityStrategy implements  IStrategy {
+
+	@Override
+	public String getName() {
+		return "K Anonymity Strategy";
+	}
+
+	@Override
+	public String getGoal() {
+		return "Apply K-anonymity algorithm";
+	}
+
+	@Override
+	public boolean canBeApplied(Element element) {
+		if( element instanceof org.eclipse.uml2.uml.NamedElement) {return true;}
+		return false;
+	}
+
+	@Override
+	public Command getCommand(Element element, TransactionalEditingDomain domain) {
+		// TODO Auto-generated method stub
+		return new KAnonymityCommand(domain, element);
+
+	}
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/command/KAnonymityCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/command/KAnonymityCommand.java
new file mode 100644
index 0000000..15fb35e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/command/KAnonymityCommand.java
@@ -0,0 +1,305 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA. 
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ * 
+ * 		Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ * 
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies.command;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui.KAnonymityDialog;
+import org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui.KAnonymityOutcomesDialog;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+
+
+public class KAnonymityCommand extends RecordingCommand {
+
+	public Element elmt;
+
+	public KAnonymityCommand(TransactionalEditingDomain domain, Element element) {
+		super(domain);
+		this.elmt = element;
+		// TODO Auto-generated constructor stub
+	}
+
+	public KAnonymityCommand(TransactionalEditingDomain domain, String label) {
+		super(domain, label);
+		// TODO Auto-generated constructor stub
+	}
+
+	public KAnonymityCommand(TransactionalEditingDomain domain, String label, String description) {
+		super(domain, label, description);
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	protected void doExecute() {
+		// TODO Auto-generated method stub
+		EList<Stereotype> selectedStereotypeList = elmt.getAppliedStereotypes();
+		EList<Element> tableElementsList = new BasicEList<Element>();
+		if (selectedStereotypeList.size()>0) {
+			// Get the stereotype from the element selected
+			Stereotype selectedStereotype = selectedStereotypeList.get(0);
+			if (selectedStereotype!=null) {
+
+				// Gather all elements having the selected stereotype
+				tableElementsList = getTableElementsList(selectedStereotype);
+
+				// Create and open the k-anonymity dialog
+				KAnonymityDialog kAnonymityDialog=new KAnonymityDialog(selectedStereotype);
+				kAnonymityDialog.open();
+
+				ArrayList<Property> propertiesList = kAnonymityDialog.getSelectedProperty();
+				
+				EList<Element> KanonymizedTable = computeEqualitySetsWrtQI(selectedStereotype, tableElementsList, propertiesList);
+				
+				ArrayList<Integer> cardinalityEqualitySetsQI = computeEqualitySetsCardinalityWrtQI(selectedStereotype, tableElementsList, propertiesList);
+				
+				for (Iterator<Integer> cardinalityEqualitySetsQIIt = cardinalityEqualitySetsQI.iterator(); cardinalityEqualitySetsQIIt.hasNext();) {
+					System.out.println("Cardinality: "+cardinalityEqualitySetsQIIt.next().toString());
+				}
+				int kAnonymityTarget = kAnonymityDialog.getKvalue();
+				int kAnonymityValue = KAnonymityAlgorithm(selectedStereotype, tableElementsList, propertiesList);
+				
+				System.out.println("K-anonymity value: "+ kAnonymityValue);
+				
+				int[] lowerUpperBounds = computeLowerUpperBounds(selectedStereotype, tableElementsList, propertiesList);
+
+				
+				KAnonymityOutcomesDialog kAnonymityOutcomes = new KAnonymityOutcomesDialog(KanonymizedTable, 
+						propertiesList, 
+						kAnonymityTarget, 
+						kAnonymityValue, lowerUpperBounds);
+				
+			}	
+		}
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @return
+	 */
+	public EList<Element> getTableElementsList(Stereotype stereotype){
+		EList<Element> tableElementsList = new BasicEList<Element>();
+
+		// Gather all elements within the parent package
+		PackageableElement parentPackage = elmt.getModel().getNearestPackage();
+		if (parentPackage!=null) {
+			EList<Element> parentPackageElements = parentPackage.getOwnedElements();
+			// Filter elements according to the chosen stereotype
+			for (Iterator<Element> elementsListIt = parentPackageElements.iterator(); elementsListIt.hasNext() ;){
+				Element tgtElement = elementsListIt.next();
+				if ((tgtElement!=null) && (tgtElement instanceof org.eclipse.uml2.uml.Classifier) ){
+					Classifier tgtClassElement = (Classifier) tgtElement;
+					// Obtain list of applied stereotypes
+					EList<Stereotype>  tgtClassStLst = tgtClassElement.getAppliedStereotypes();
+					// Find if the list includes the chosen stereotype
+					if (tgtClassStLst!=null){
+						boolean notfound = true;
+						for (Iterator<Stereotype> tgtClassStLstIt = tgtClassStLst.iterator(); tgtClassStLstIt.hasNext() && notfound;){
+							Stereotype tgtClassSt = tgtClassStLstIt.next();
+							if (tgtClassSt!=null && tgtClassSt.getName().equals(stereotype.getName())){
+								notfound = false;
+								if (!tableElementsList.contains(tgtElement)){
+									tableElementsList.add((Element) tgtElement);	
+								}
+							} 
+						}
+					}
+				}
+			}
+		}
+		return tableElementsList;
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @param rowElement1
+	 * @param rowElement2
+	 * @param QuasiIdentifiers
+	 * @return
+	 */
+	public boolean compareTwoRowElements(Stereotype stereotype, Element rowElement1, Element rowElement2, ArrayList<Property> QuasiIdentifiers) {
+		boolean result = true;
+		for (Iterator<Property> QuasiIdentifierIt = QuasiIdentifiers.iterator(); QuasiIdentifierIt.hasNext() && result;) {
+			Property property = QuasiIdentifierIt.next();
+			if (rowElement1!=null && 
+					rowElement2!= null && 
+					rowElement1.getValue(stereotype, property.getName())!=null && 
+					rowElement2.getValue(stereotype, property.getName())!=null) {
+				if (!(rowElement1.getValue(stereotype, property.getName()).equals(rowElement2.getValue(stereotype, property.getName()))) ) {
+					result = false;
+				}
+			} else {
+				result = false;
+			}
+		}
+		return result;
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @param refRowElement
+	 * @param tableElementsList
+	 * @param QuasiIdentifiers
+	 * @return
+	 */
+	public int countEqualRowsWrtQuasiIdentifiers(Stereotype stereotype, Element refRowElement, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers) {
+		int result = 0;
+		Element element;
+		for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+			element = tableElementsListIt.next();
+			if (element!=null && element instanceof org.eclipse.uml2.uml.Classifier) {
+				if (compareTwoRowElements(stereotype, refRowElement, element, QuasiIdentifiers)) {
+					result++;
+				}	
+			}
+		}
+		return result;
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @param refRowElement
+	 * @param tableElementsList
+	 * @param QuasiIdentifiers
+	 * @return
+	 */
+	public EList<Element> getEqualRowsWrtQuasiIdentifiers(Stereotype stereotype, Element refRowElement, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers) {
+		EList<Element> equalityElementsWrtQI = new BasicEList<Element>();
+		Element element;
+		for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+			element = tableElementsListIt.next();
+			if (element!=null && element instanceof org.eclipse.uml2.uml.Classifier) {
+				if (compareTwoRowElements(stereotype, refRowElement, element, QuasiIdentifiers)) {
+					equalityElementsWrtQI.add(element);
+				}	
+			}
+		}
+		return equalityElementsWrtQI;
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @param tableElementsList
+	 * @param QuasiIdentifiers
+	 * @return
+	 */
+	public ArrayList<Integer> computeEqualitySetsCardinalityWrtQI(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers){
+		ArrayList<Integer> cardinalityEqualitySetsQI = new ArrayList<Integer>();
+		EList<Element> equalityElementsWrtQI = new BasicEList<Element>();
+		if (stereotype!=null && tableElementsList!=null && QuasiIdentifiers!=null && 
+				tableElementsList.size()>0 && QuasiIdentifiers.size()>0) {
+			int cardinality = 0;
+			for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+				Element element = tableElementsListIt.next();
+				if (countEqualRowsWrtQuasiIdentifiers(stereotype, element, equalityElementsWrtQI, QuasiIdentifiers)==0) {
+					cardinality = countEqualRowsWrtQuasiIdentifiers(stereotype, element, tableElementsList, QuasiIdentifiers);
+					cardinalityEqualitySetsQI.add(cardinality);
+					equalityElementsWrtQI.add(element);
+				}
+			}
+		}
+		return cardinalityEqualitySetsQI;
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @param tableElementsList
+	 * @param QuasiIdentifiers
+	 * @return
+	 */
+	public EList<Element> computeEqualitySetsWrtQI(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers){
+		EList<Element> equalityElementsWrtQI = new BasicEList<Element>();
+		if (stereotype!=null && tableElementsList!=null && QuasiIdentifiers!=null && 
+				tableElementsList.size()>0 && QuasiIdentifiers.size()>0) {
+			for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+				Element element = tableElementsListIt.next();
+				if (countEqualRowsWrtQuasiIdentifiers(stereotype, element, equalityElementsWrtQI, QuasiIdentifiers)==0) {
+					equalityElementsWrtQI.addAll(getEqualRowsWrtQuasiIdentifiers(stereotype, element, tableElementsList, QuasiIdentifiers));
+				}
+			}
+		}
+		return equalityElementsWrtQI;
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @param tableElementsList
+	 * @param QuasiIdentifiers
+	 * @return
+	 */
+	public int KAnonymityAlgorithm(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers) {
+		int kvalue = 0;
+		ArrayList<Integer> cardinalityEqualitySetsQI = new ArrayList<Integer>();
+		if (stereotype!=null && tableElementsList!=null && QuasiIdentifiers != null && 
+				tableElementsList.size()>0 && QuasiIdentifiers.size()>0) {
+			cardinalityEqualitySetsQI = computeEqualitySetsCardinalityWrtQI(stereotype, tableElementsList, QuasiIdentifiers);
+			if (cardinalityEqualitySetsQI!=null && cardinalityEqualitySetsQI.size()>0) {
+				kvalue = cardinalityEqualitySetsQI.get(0);
+				for (Iterator<Integer> cardinalityEqualitySetsQIIt = cardinalityEqualitySetsQI.iterator(); 
+						cardinalityEqualitySetsQIIt.hasNext();) {
+					Integer value = cardinalityEqualitySetsQIIt.next();
+					if (value < kvalue) {
+						kvalue = value;
+					}
+				}
+			}
+		}
+		
+		return kvalue;
+	}
+	
+	/**
+	 * 
+	 * @param stereotype
+	 * @param tableElementsList
+	 * @param QuasiIdentifiers
+	 * @return
+	 */
+	public int[] computeLowerUpperBounds(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers){
+		int[] lowerUpperBounds = new int[2];
+		ArrayList<Integer> equalitySetsCardinality = computeEqualitySetsCardinalityWrtQI(stereotype, tableElementsList, QuasiIdentifiers);
+		int kvalue = KAnonymityAlgorithm(stereotype, tableElementsList, QuasiIdentifiers);
+		int lower = 0;
+		int upper = 0;
+		boolean notfound = true;
+		for (Iterator<Integer> equalitySetsCardinalityIt = equalitySetsCardinality.iterator(); equalitySetsCardinalityIt.hasNext() && notfound; ) {
+			Integer aux = equalitySetsCardinalityIt.next();
+			if (aux == kvalue) {
+				notfound=false;
+			} else {
+				lower += aux;
+			}
+		}
+		upper = lower + kvalue;
+		lowerUpperBounds[0] = lower;
+		lowerUpperBounds[1] = upper;
+		
+		return lowerUpperBounds;
+	}
+	
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityDialog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityDialog.java
new file mode 100644
index 0000000..d357ef6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityDialog.java
@@ -0,0 +1,254 @@
+/**

+ * Copyright (c) 2019 CEA LIST.

+ * 

+ * All rights reserved. This program and the accompanying materials

+ * are the property of the CEA. 

+ * Any use is subject to specific agreement with the CEA.

+ * Contributors:

+ * 

+ * 		Patrick Tessier (CEA LIST) - Initial API and implementation

+ * 		Gabriel Pedroza (CEA LIST) - API extensions and modifications

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui;

+

+

+import java.util.ArrayList;

+

+import org.eclipse.jface.viewers.ILabelProviderListener;

+import org.eclipse.jface.viewers.IStructuredContentProvider;

+import org.eclipse.jface.viewers.ITableLabelProvider;

+import org.eclipse.jface.viewers.TableViewer;

+import org.eclipse.jface.viewers.TableViewerColumn;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.events.SelectionAdapter;

+import org.eclipse.swt.events.SelectionEvent;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Button;

+import org.eclipse.swt.widgets.Display;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Listener;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.swt.widgets.Table;

+import org.eclipse.swt.widgets.TableItem;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.uml2.uml.Property;

+import org.eclipse.uml2.uml.Stereotype;

+import org.eclipse.uml2.uml.UMLFactory;

+

+/**

+ *

+ */

+public class KAnonymityDialog {

+	protected Object result=null;

+

+

+	protected Display display;

+	protected Shell shell;

+	protected Button okbt;

+	protected Button cancelbt;

+

+

+	protected Stereotype stereotype=null;

+

+	protected boolean canExecute=false;

+	protected ArrayList<Table> tableList= new ArrayList<Table>();

+	protected ArrayList<Property> selectedProperties= new ArrayList<Property>();

+

+

+	protected Text textCell;

+	protected int kvalue;

+

+

+	public KAnonymityDialog(Stereotype stereotype) {

+

+		this.stereotype=stereotype;

+

+

+		display =  Display.getDefault();

+		shell = new Shell(display);

+

+		shell.setSize(250, 200);

+		shell.setText("K-Anonymity");

+		GridLayout gl = new GridLayout();

+		gl.numColumns = 2;

+		shell.setLayout(gl);

+

+		final Table table = new Table(shell, SWT.BORDER | SWT.CHECK | SWT.MULTI | SWT.FULL_SELECTION);

+

+		TableViewer viewer= new TableViewer(table);

+

+

+		viewer.getTable().addListener(SWT.Selection, new Listener() {

+			public void handleEvent(Event event) {

+				if ((event.detail == SWT.CHECK) && (event.item instanceof TableItem)) {

+					TableItem selectedTableItem=(TableItem)event.item;

+					TableItem[] itemSet=table.getItems();

+					for (int i=0; i<itemSet.length;i++){

+						if(itemSet[i].getChecked()){

+							//System.err.println(" checked "+itemSet[i].getData());

+							itemSet[i].setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN));

+							itemSet[i].setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));

+							selectedProperties.add((Property)itemSet[i].getData());

+						}

+						else {

+							//System.err.println("not  checked "+itemSet[i].getData());

+							itemSet[i].setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));

+							itemSet[i].setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));

+							selectedProperties.remove((Property)itemSet[i].getData());

+						}

+

+					}

+				}

+			}

+		}

+

+				);

+

+		//TableViewer 

+		createColumn(viewer);

+		viewer.setContentProvider(new IStructuredContentProvider() {

+

+			@Override

+			public Object[] getElements(Object inputElement) {

+				if( inputElement instanceof Stereotype)

+					return ((Stereotype)inputElement).getAllAttributes().toArray();

+				return null;

+			}

+		}); 

+		viewer.setLabelProvider(new  ITableLabelProvider() {

+

+			@Override

+			public void removeListener(ILabelProviderListener listener) {

+			}

+

+			@Override

+			public boolean isLabelProperty(Object element, String property) {

+				return false;

+			}

+

+			@Override

+			public void dispose() {

+			}

+

+			@Override

+			public void addListener(ILabelProviderListener listener) {

+			}

+

+			@Override

+			public String getColumnText(Object element, int columnIndex) {

+				switch(columnIndex) {

+				case 0:

+					return ((Property)element).getName();

+				default:

+					return "";

+				}

+			}

+

+			@Override

+			public Image getColumnImage(Object element, int columnIndex) {

+				return null;

+			}

+		});

+		viewer.setInput(stereotype);

+		final GridData gd = new GridData(GridData.FILL_BOTH);

+		gd.horizontalSpan = 2;

+		table.setLayoutData(gd);

+		table.setHeaderVisible(true);

+		Label label= new Label(shell, SWT.NONE);

+		label.setText("K target value: ");

+		label.setAlignment(SWT.RIGHT);

+		textCell = new Text(shell, SWT.NONE);

+

+

+		okbt = new Button(shell, SWT.NONE);

+		okbt.setText("Execute");

+

+		cancelbt = new Button(shell, SWT.NONE);

+		cancelbt.setText("Cancel");

+

+		addButtonListener();

+

+		shell.pack();

+

+

+	}

+

+

+	private void createColumn(TableViewer viewer) {

+		// name column

+		TableViewerColumn nameColumn = new TableViewerColumn(viewer, SWT.RESIZE);

+		nameColumn.getColumn().setText("Select Quasi Identifiers");

+		nameColumn.getColumn().setWidth(200);

+		nameColumn.getColumn().setResizable(true);

+		nameColumn.getColumn().setMoveable(false);

+	}

+

+	public int getKvalue() {

+		return this.kvalue;

+	}

+

+

+	public ArrayList<Property> getSelectedProperty(){

+		return selectedProperties;

+	}

+

+

+	public void addButtonListener(){

+		//Execute button selection

+		okbt.addSelectionListener(new SelectionAdapter() {

+			public void widgetSelected(SelectionEvent event) {

+				canExecute=true;

+				if(textCell.getText()==null) {

+					kvalue = 0;

+				}

+				else{

+					if (textCell.getText().length()>0) {

+						Integer value= new Integer(textCell.getText());

+						kvalue = value.intValue();		

+					}

+				}

+				shell.close();

+			}

+		});

+

+		//Cancel button selection

+		cancelbt.addSelectionListener(new SelectionAdapter() {

+			public void widgetSelected(SelectionEvent event) {

+				canExecute=false;

+				shell.close();

+			}

+		});

+

+	}

+

+

+	/**

+	 * Open the dialog.

+	 * @return the result

+	 */

+	public Object open() {

+		shell.open();

+		while(!shell.isDisposed()) {

+			if(!display.readAndDispatch()) {

+				display.sleep();

+			}

+		}

+		return result;

+	}

+

+

+	public static void main(String[] argv) {

+		Stereotype stereotype1= UMLFactory.eINSTANCE.createStereotype();

+		stereotype1.setName("TableTest");

+		stereotype1.createOwnedAttribute("column1", null);

+		stereotype1.createOwnedAttribute("column2", null);

+		stereotype1.createOwnedAttribute("column3", null);

+		stereotype1.createOwnedAttribute("column5", null);

+		KAnonymityDialog km=new KAnonymityDialog(stereotype1); 

+		km.open();

+	}

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityOutcomesDialog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityOutcomesDialog.java
new file mode 100644
index 0000000..1f38dc4
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityOutcomesDialog.java
@@ -0,0 +1,193 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA. 
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ * 
+ * 		Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ * 
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.border.LineBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+
+@SuppressWarnings("serial")
+public class KAnonymityOutcomesDialog extends JFrame
+{
+	public KAnonymityOutcomesDialog(
+			EList<Element> tableList, 
+			ArrayList<Property> QuasiIdentifiers, int kAnonymityTarget, int kAnonymityValue, int[] lowerUpperBounds){
+
+		if (tableList!=null && QuasiIdentifiers!= null && 
+				tableList.size()>0 && QuasiIdentifiers.size()>0 ) {
+
+			// Avoid repeated elements in the list of Quasi Identifiers 
+			EList<String> uniqueQIList = new BasicEList<String>();
+			for (Iterator<Property> QuasiIdentifiersIt = QuasiIdentifiers.iterator(); QuasiIdentifiersIt.hasNext(); ) {
+				Property property = QuasiIdentifiersIt.next();
+				if (property!=null && !uniqueQIList.contains(property.getName())) {
+					uniqueQIList.add(property.getName());
+				}
+			}
+
+			if (uniqueQIList.size()>0) {
+				int noColumns = uniqueQIList.size()+1;
+				int noRows = tableList.size();
+				System.out.println("No. Columns: "+noColumns);
+				System.out.println("No. Rows: "+noRows);
+				//String[] outcomesList = new String[noRows];
+				String[] headerRow = new String[noColumns];
+				Object[][] kAnonymizedTable = new Object[noRows][noColumns];
+
+				for (int i=0; i<noRows; i++) {
+					Element currentElmt = tableList.get(i);
+					EList<Stereotype> selectedStereotypeList = currentElmt.getAppliedStereotypes();
+					if (selectedStereotypeList!=null && selectedStereotypeList.size()>0) {
+						Stereotype selectedStereotype = selectedStereotypeList.get(0);
+						if (currentElmt!=null && currentElmt instanceof org.eclipse.uml2.uml.Classifier) {
+							Classifier currentElmtClass = (Classifier) currentElmt;
+							kAnonymizedTable[i][0]= currentElmtClass.getName();
+							for (int j=0; j<noColumns-1; j++) {
+								String QIattribute = uniqueQIList.get(j);
+								if (QIattribute!=null) {
+									kAnonymizedTable[i][j+1] = currentElmtClass.getValue(selectedStereotype, QIattribute).toString();	
+								}
+							}
+						}
+					}
+				}
+
+				headerRow[0]= "ElementName";
+				for (int j=0; j<noColumns-1; j++) {
+					headerRow[j+1] = (String) uniqueQIList.get(j);
+				}
+
+				// add the table to the frame
+				JTable table = new JTable(kAnonymizedTable, headerRow){
+					private static final long serialVersionUID = 1L;
+					@Override
+					public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
+						Component c = super.prepareRenderer(renderer, row, column);
+						if (isRowSelected(row) && isColumnSelected(column)) {
+							((JComponent) c).setBorder(new LineBorder(Color.GREEN));
+						}
+						return c;
+					}
+				};
+				
+				if ((kAnonymityTarget>kAnonymityValue)) {
+					table.setDefaultRenderer(Object.class, new CellRenderer(lowerUpperBounds[0],lowerUpperBounds[1]));	
+				}	
+
+				this.add(new JScrollPane(table));
+				this.pack();
+
+				// auxiliary elements of the frame
+				
+				this.setTitle("K-Anonymity Outcomes");
+				this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+				JTextArea kanonymityText;
+				if (kAnonymityTarget>kAnonymityValue) {
+					kanonymityText = new JTextArea("K-ANONYMITY OUTCOMES\n\n"+ 
+							"K-Anonymity target: "+kAnonymityTarget+
+							"\nK-Anonymity achieved: "+kAnonymityValue+
+							"\n\nProperty satisfied? "+ (kAnonymityTarget<=kAnonymityValue)+
+							"\n\n A concerned data set is highlighted!");
+					kanonymityText.setForeground(Color.MAGENTA);
+				} else {
+					kanonymityText = new JTextArea("K-ANONYMITY OUTCOMES\n\n"+ 
+							"K-Anonymity target: "+kAnonymityTarget+
+							"\nK-Anonymity achieved: "+kAnonymityValue+
+							"\n\nProperty satisfied? "+ (kAnonymityTarget<=kAnonymityValue));
+					kanonymityText.setForeground(Color.BLUE);
+				}
+				kanonymityText.setEditable(false);
+				this.add(kanonymityText, BorderLayout.BEFORE_LINE_BEGINS);
+				this.pack();
+
+				JButton myButton = new JButton(" CLOSE ");
+				myButton.addActionListener(eAL -> {
+					this.dispose();
+					pack();
+				});
+
+				this.add(myButton, BorderLayout.SOUTH);
+				this.pack();
+				this.setVisible(true);
+			}
+		}
+	}
+
+	class CellRenderer extends DefaultTableCellRenderer {
+		public int lower;
+		public int upper;
+
+		CellRenderer(int lowerBound,int upperBound){
+			lower=lowerBound;
+			upper=upperBound;
+		}
+
+		public Component getTableCellRendererComponent(
+				JTable table, Object value, boolean isSelected,
+				boolean hasFocus, int row, int column)
+		{
+			if (row >=lower && row <upper) {
+				setBackground(Color.LIGHT_GRAY);
+				setForeground(Color.MAGENTA);
+
+			} else {
+				setBackground(Color.WHITE);
+				setForeground(Color.BLACK);
+			}
+
+			return super.getTableCellRendererComponent(table, value, isSelected,
+					hasFocus, row, column);
+		}	
+	}
+
+	public static void main(String[] args) {
+		Object[] options1 = { "Try This Number", "Choose A Random Number", "Quit" };
+
+		JPanel panel = new JPanel();
+		panel.add(new JLabel("Enter number between 0 and 1000"));
+		JTextField textField = new JTextField(10);
+		panel.add(textField);
+
+		int result = JOptionPane.showOptionDialog(null, panel, "Enter a Number",
+				JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null,
+				options1, null);
+		if (result == JOptionPane.YES_OPTION) {
+			JOptionPane.showMessageDialog(null, textField.getText());
+
+		}
+	}
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.project
new file mode 100644
index 0000000..7de6f5e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.pdp4eng.designer.engine</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1c776ad
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.engine;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.engine
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.emf.common;bundle-version="[2.19.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.1,2.0.0)"
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.engine.api
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 30, 2017</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/build.properties
new file mode 100644
index 0000000..aa1a008
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/plugin.properties
new file mode 100644
index 0000000..f656ede
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/plugin.properties
@@ -0,0 +1,16 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#	  Gabriel Pedroza - initial API and implementation
+#	  Patrick Tessier - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design Engine
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/pom.xml
new file mode 100644
index 0000000..dc2e0b6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>org.eclipse.papyrus.pdp4eng</groupId>
+		<artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	<artifactId>org.eclipse.papyrus.pdp4eng.designer.engine</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+	
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/CatalogFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/CatalogFactory.java
new file mode 100644
index 0000000..e21d10c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/CatalogFactory.java
@@ -0,0 +1,39 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.engine.api;

+

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.internal.StrategyCatalog;

+/**

+ * Req003.001: the system shall have a catalog to sore all possible strategies.

+ * This class is used to create a Catalog

+ * @author PT202707

+ *

+ */

+public class CatalogFactory {

+	

+	public CatalogFactory() {

+	}

+	

+	/**

+	 * Create  a catalog

+	 * @param id the id of the catalog

+	 * @return a catalog

+	 */

+	public IStrategyCatalog createCatalog(String id) {

+		return new StrategyCatalog(id);

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategy.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategy.java
new file mode 100644
index 0000000..6dd37ad
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategy.java
@@ -0,0 +1,55 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.engine.api;

+

+import org.eclipse.emf.common.command.Command;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.uml2.uml.Element;

+

+/**

+ * Req001.001: A strategy shall be a model transformation.

+ * <BR>

+ * Req001.001.001: A Strategy shall contains a name in order to identify it.

+ * <BR>

+ * Req001.001.002: A Strategy shall contains a goal to explain to user the purpose of this transformation.

+ * <BR>

+ * Req001.001.003: A strategy shall contain the transformation of the model.

+ *

+ */

+public interface IStrategy {

+	/**@return the name of the strategy

+	 * **/

+	public String getName();

+	/**

+	 * 

+	 * @return some information about the strategy

+	 */

+	public String getGoal();

+	/**

+	 * 

+	 * @param model the model to apply the transformation

+	 * @return true if the strategy can be applied

+	 */

+	public boolean canBeApplied(Element element);

+	/**

+	 * 

+	 * @param model the model to apply the transformation

+	 * @return the command that is the transformation

+	 */

+	public Command getCommand(Element element, TransactionalEditingDomain domain);

+

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyCatalog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyCatalog.java
new file mode 100644
index 0000000..524d369
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyCatalog.java
@@ -0,0 +1,47 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.engine.api;

+

+import java.util.ArrayList;

+

+/**

+* Req003.001: the system shall have a catalog to sore all possible strategies.

+* <BR>

+* Req003.002: the calalog shall provide to developer add their own strategies. 

+* <BR> 

+ *

+ */

+public interface IStrategyCatalog {

+	

+

+		/**

+		 * getter of possible rules

+		 * @return the list of possible rules

+		 */

+		public ArrayList<IStrategy> getPossibleStrategies();

+		

+

+		/**

+		 * Add a strategy inside the Catalog

+		 * @param newStrategy add this strategy inside the catalog

+		 */

+		public void addStrategy(IStrategy newStrategy);

+		

+		/** @return the Id of the catalog**/

+		public String getId();

+

+	}

+

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyEngine.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyEngine.java
new file mode 100644
index 0000000..d90e120
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyEngine.java
@@ -0,0 +1,79 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.engine.api;

+

+import java.util.ArrayList;

+

+/**

+ * Req002.001: The system shall have an engine to get the selected strategy

+ * </BR>

+ * Req002.002: The engine shall be able to execute selected rules

+ *<BR>

+ ** Req002.003: the engine shall be a singleton .

+ */

+public interface IStrategyEngine {

+

+	/**

+	 * getter of executable rules

+	 * @return the list of possible rules

+	 */

+	public IStrategy getStrategyToExecute();

+

+

+	/**

+	 * connect a catalog to the engine.

+	 * @param catalog

+	 */

+	public void connectACatalog(IStrategyCatalog catalog);

+

+

+	/** get the current Catalog**/

+	public ArrayList<IStrategyCatalog> getCurrentCatalogList();

+

+	/**

+	 * set the Strategy to execute

+	 * @param strategy 

+	 */

+	public void setStrategyToExecute(IStrategy strategy);

+	/**

+	 * clear the list of executable rules

+	 */

+	public void clearExecutableStrategy();

+

+

+	/**

+	 * 

+	 * @return true is the catalog and the context to execute strategy are set.

+	 */

+	public boolean isReadyToRun();

+

+	/**

+	 * 

+	 * @param index

+	 * @return the catalog in the register "index"

+	 */

+

+	IStrategyCatalog getCatalog(int index);

+

+

+	/**

+	 * 

+	 * @param name

+	 * @return the catalog named "name"

+	 */

+	IStrategyCatalog getCatalog(String name);

+	

+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/StrategyEngineFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/StrategyEngineFactory.java
new file mode 100644
index 0000000..84fb51d
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/StrategyEngineFactory.java
@@ -0,0 +1,58 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.engine.api;

+

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.internal.StrategyEngine;

+

+/**

+ * Req003.002: the engine shall be a singleton.

+ *

+ */

+public class StrategyEngineFactory {

+

+	 protected IStrategyEngine strategyEngine;

+	

+	private StrategyEngineFactory() {

+		super();

+	}

+	

+	private static StrategyEngineFactory instance=null;

+

+	public static StrategyEngineFactory getInstance() {

+		 if( instance==null) {

+			 instance= new StrategyEngineFactory();

+		 }

+		 return instance;

+	}

+	/** 

+	 * 

+	 * @return get the current engine

+	 */

+	public IStrategyEngine getCurrentEngine() {

+		if( strategyEngine==null) {

+			createEngine();

+		}

+		return strategyEngine;

+	}

+	

+	/**

+	 * create a default engine

+	 * if you want to instanciate an new engine, you can inherit and add your own method of engine creation :D

+	 */

+	public void createEngine() {

+		strategyEngine= new StrategyEngine();

+	}

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyCatalog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyCatalog.java
new file mode 100644
index 0000000..487b2ac
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyCatalog.java
@@ -0,0 +1,46 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.engine.api.internal;

+

+import java.util.ArrayList;

+

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;

+

+public class StrategyCatalog implements IStrategyCatalog {

+

+	protected String id=null;

+	public StrategyCatalog(String id) {

+		this.id=id;

+	}

+	protected  ArrayList<IStrategy> strategies= new ArrayList<>();

+	@Override

+	public ArrayList<IStrategy> getPossibleStrategies() {

+		return strategies;

+	}

+

+	@Override

+	public void addStrategy(IStrategy newStrategy) {

+		strategies.add(newStrategy);

+

+	}

+

+	@Override

+	public String getId() {

+		return this.id;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyEngine.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyEngine.java
new file mode 100644
index 0000000..1055d41
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyEngine.java
@@ -0,0 +1,85 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.engine.api.internal;

+

+import java.util.ArrayList;

+import java.util.ListIterator;

+

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyEngine;

+

+public class StrategyEngine implements IStrategyEngine {

+

+	protected IStrategy selectedStrategy=null;

+	protected ArrayList<IStrategyCatalog> currentCatalogList=new ArrayList<>(); //maybe a collection?

+

+	@Override

+	public IStrategy getStrategyToExecute() {

+		return selectedStrategy;

+	}

+

+	@Override

+	public void connectACatalog(IStrategyCatalog catalog) {

+		this.currentCatalogList.add(catalog);

+

+	}

+	@Override

+	public ArrayList<IStrategyCatalog> getCurrentCatalogList(){

+		return currentCatalogList;

+	}

+	

+	@Override

+	public IStrategyCatalog getCatalog(int index) {

+		if (currentCatalogList.size()>0 && index<currentCatalogList.size()) {

+			return currentCatalogList.get(index);

+		}

+		return null;

+	}

+	

+	@Override

+	public IStrategyCatalog getCatalog(String name){

+		if (currentCatalogList.size()>0) {

+			ListIterator<IStrategyCatalog> catalogListIterator = currentCatalogList.listIterator();

+			while (catalogListIterator.hasNext()) {

+				IStrategyCatalog currentCatalog = catalogListIterator.next();

+				if (currentCatalog!=null && currentCatalog.getId().equals(name)) {

+					return currentCatalog;

+				}

+			}

+		}

+		return null;

+	}

+

+	@Override

+	public void clearExecutableStrategy() {

+		this.selectedStrategy=null;

+

+	}

+

+	@Override

+	public void setStrategyToExecute(IStrategy strategy) {

+		selectedStrategy= strategy;

+

+	}

+	@Override

+	public boolean isReadyToRun() {

+		if( currentCatalogList.size()!=0) {

+			return true;

+		}

+		return false;

+	}

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.classpath
new file mode 100644
index 0000000..e78a76c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.project
new file mode 100644
index 0000000..8c301ae
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.pdp4eng.designer.libraries-patterns</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..87b7a7a
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fcd7100
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.libraries-patterns;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.libraries-patterns
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.ui;bundle-version="[3.117.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.22.0,3.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.19.0,3.0.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 30, 2017</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.properties
new file mode 100644
index 0000000..b202ac5
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#	  Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng process libraries pattern
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.xml
new file mode 100644
index 0000000..5535690
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/pom.xml
new file mode 100644
index 0000000..cb9c35d
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>org.eclipse.papyrus.pdp4eng</groupId>
+		<artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	<artifactId>org.eclipse.papyrus.pdp4eng.designer.libraries-patterns</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+	
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.classpath
new file mode 100644
index 0000000..1fa3e68
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.project
new file mode 100644
index 0000000..240660b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.pdp4eng.designer.processstrategies</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e768ed8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.processstrategies;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.processstrategies
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.pdp4eng.designer.engine;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.1,2.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.119.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.117.0,4.0.0)",
+ org.eclipse.papyrus.uml.properties;bundle-version="[3.5.100,4.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.controller;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.profile;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.pdp4eng.common.profile;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.utils;bundle-version="[1.0.0,2.0.0)"
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.processstrategies.Activator
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 30, 2017</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/build.properties
new file mode 100644
index 0000000..0dc34f7
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.properties
new file mode 100644
index 0000000..71f5076
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#	  Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng process strategies
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.xml
new file mode 100644
index 0000000..d003ba8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.startup">
+            <startup
+            class="org.eclipse.papyrus.pdp4eng.designer.processstrategies.Activator"></startup>
+   </extension>
+
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/pom.xml
new file mode 100644
index 0000000..239ad06
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>org.eclipse.papyrus.pdp4eng</groupId>
+		<artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	
+	<artifactId>org.eclipse.papyrus.pdp4eng.designer.processstrategies</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+	
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/Activator.java
new file mode 100644
index 0000000..a160208
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/Activator.java
@@ -0,0 +1,68 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.processstrategies;

+

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.CatalogFactory;

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;

+import org.eclipse.papyrus.pdp4eng.designer.engine.api.StrategyEngineFactory;

+import org.eclipse.ui.IStartup;

+import org.eclipse.ui.plugin.AbstractUIPlugin;

+import org.osgi.framework.BundleContext;

+

+

+

+

+public class Activator extends AbstractUIPlugin implements  IStartup{

+	// The plug-in ID

+	public static final String pluginId = "org.eclipse.papyrus.pdp4eng.designer.processstrategies";

+	// The shared instance

+	private static Activator plugin;

+

+	@Override

+	public void start(BundleContext context) throws Exception {

+		super.start(context);

+		Activator.plugin = this;

+		

+		StrategyEngineFactory engineFactory= StrategyEngineFactory.getInstance();

+		CatalogFactory catalogFactory= new CatalogFactory();

+		IStrategyCatalog catalog=catalogFactory.createCatalog("Process-oriented Strategies");

+		catalog.addStrategy(new InstantiateGDPRConsentPatternStrategy());

+		engineFactory.getCurrentEngine().connectACatalog(catalog);

+

+	}

+

+	@Override

+	public void stop(BundleContext context) throws Exception {

+		Activator.plugin = null;

+		super.stop(context);

+

+	}

+

+	@Override

+	public void earlyStartup() {

+		// TODO Auto-generated method stub

+

+	}

+	/**

+	 * Returns the shared instance

+	 *

+	 * @return the shared instance

+	 */

+	public static Activator getDefault() {

+		return Activator.plugin;

+	}

+

+}

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/InstantiateGDPRConsentPatternStrategy.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/InstantiateGDPRConsentPatternStrategy.java
new file mode 100644
index 0000000..b96f0fb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/InstantiateGDPRConsentPatternStrategy.java
@@ -0,0 +1,51 @@
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.processstrategies;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.papyrus.pdp4eng.designer.processstrategies.command.InstantiateGDPRConsentPatternCommand;
+
+public class InstantiateGDPRConsentPatternStrategy implements  IStrategy {
+
+	@Override
+	public String getName() {
+		return "GDPRConsentPatternStrategy";
+	}
+
+	@Override
+	public String getGoal() {
+		return "Instantiate GDPR Consent Pattern Strategy";
+	}
+
+	@Override
+	public boolean canBeApplied(Element element) {
+		if( element instanceof org.eclipse.uml2.uml.Activity) {return true;}
+		return false;
+	}
+
+	@Override
+	public Command getCommand(Element element, TransactionalEditingDomain domain) {
+		// TODO Auto-generated method stub
+		return new InstantiateGDPRConsentPatternCommand(domain, (Activity) element);
+
+	}
+
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/command/InstantiateGDPRConsentPatternCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/command/InstantiateGDPRConsentPatternCommand.java
new file mode 100644
index 0000000..ed39108
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/command/InstantiateGDPRConsentPatternCommand.java
@@ -0,0 +1,707 @@
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.processstrategies.command;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.*;
+import org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation.ProcessBuilder;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.widgets.Display;
+
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.ObjectFlow;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.ProfileApplication;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.util.UMLUtil;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelPackageNames;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelProfileNames;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Consent;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Controller;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.DataSubject;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.PersonalData;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Processor;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Purpose;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Process;
+
+public class InstantiateGDPRConsentPatternCommand extends RecordingCommand {
+
+	protected Activity activityDFD;
+
+	public InstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+		super(domain, "Instantiate a Consent Pattern based upon the information provided by the engineer");
+		this.activityDFD = activityDFD;
+	}
+
+	@Override
+	protected void doExecute() {
+
+		String title = "1. Consent Pattern - Select the Controller";
+		String message = "1. Select the Controller responsible for processing Personal Data";
+		ExternalEntity selectedController = selectExternalEntityFromActivityDFD(title,message);
+		Entity controllerEntity = createEntity(selectedController.getBase_ActivityParameterNode().getName());
+		Entity processorEntity = createEntity(selectedController.getBase_ActivityParameterNode().getName()+"_Processor");
+		applyStereotypeToNamedElement(controllerEntity.getBase_NamedElement(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_Controller);
+		applyStereotypeToNamedElement(processorEntity.getBase_NamedElement(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_Processor);
+		selectedController.setEntity(controllerEntity);
+
+		title = "2. Consent Pattern - Select the Data Subject";
+		message = "2. Select the Data Subject to ask for Consent";
+		ExternalEntity selectedDataSubject = selectExternalEntityFromActivityDFD(title, message);
+		Entity dataSubjectEntity = createEntity(selectedDataSubject.getBase_ActivityParameterNode().getName());
+		applyStereotypeToNamedElement(dataSubjectEntity.getBase_NamedElement(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_DataSubject);
+		selectedDataSubject.setEntity(dataSubjectEntity);
+
+		title = "3. Consent Pattern - Select the Process";
+		message = "3. Select the Process concerned by the Consent";
+		CallProcess selectedCallProcess = selectCallProcessFromActivityDFD(title, message);
+		applyStereotypeToAction(selectedCallProcess.getBase_CallBehaviorAction(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_Process);
+
+		title = "4. Consent Pattern - Declare the Purpose";
+		message = "4. Declare the Purpose for which Data is processed";
+		InputDialog dialog = new InputDialog(Display.getCurrent().getActiveShell(),
+				title, message, "", null);
+		dialog.open();
+		String purposeTxt = dialog.getValue();
+		Purpose purpose = createPurpose(purposeTxt);
+
+		title = "5. Consent Pattern - Select the Personal Data";
+		message = "5. Select the Personal Data involved in "+ selectedCallProcess.getBase_CallBehaviorAction().getName();
+		PersonalData selectedPersonalData = selectPersonalDataFromActivityDFD(title, message);
+
+		/** Start to instantiate the Consent Pattern by completing and filling the model **/
+
+		/** 1st. Controller (and Processor) **/
+		Controller controller = getController(controllerEntity.getBase_NamedElement());
+		Processor processor = getProcessor(processorEntity.getBase_NamedElement());
+
+		if ((controller!=null) && (processor!=null) && (selectedPersonalData!=null)) {
+			controller.getPersonalData().add(selectedPersonalData);
+			controller.getProcessor().add(processor);
+		}
+
+		/** 2nd. Data Subject and Consent **/
+
+		Consent consent = createConsent("Consent("+selectedPersonalData.getBase_NamedElement().getName()+"_"+purpose.getBase_NamedElement().getName()+")");
+		DataSubject dataSubject = getDataSubject(dataSubjectEntity.getBase_NamedElement());
+
+		if (dataSubject!=null && selectedPersonalData!=null && consent!=null) {	
+			dataSubject.getPersonalData().add(selectedPersonalData);
+			dataSubject.getGivenConsent().add(consent);
+		}
+
+
+		/** 3rd. Process **/
+		Process process = getProcess(selectedCallProcess.getBase_CallBehaviorAction());
+		if (process!=null) {
+			processor.getProcess().add(process);
+			process.getPersonaldata().add(selectedPersonalData);
+		}
+
+		/** 4th. Purpose **/ 
+		if (process!=null && consent!=null) {
+			purpose.getProcesses().add(process);
+			purpose.setConsent(consent);
+		}
+
+		/** INSTANTIATE THE CONSENT PATTERN **/
+
+		/** Create a CallProcess **/
+		Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+		String consentName = "GDPRConsent_"+process.getBase_NamedElement().getName();
+		newProcess.setName(consentName);
+		Package DFDL1_Pkg = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.DFD_L1_PackageName);
+		if (DFDL1_Pkg!=null && newProcess!=null) {
+			//System.err.printf(DFDL1_Pkg.toString()+"\n\n\n");
+			//System.err.printf(newProcess.toString()+"\n\n\n");
+			DFDL1_Pkg.getPackagedElements().add(newProcess);
+			CallBehaviorAction consentCallBehaviorAction=UMLFactory.eINSTANCE.createCallBehaviorAction();
+			activityDFD.getOwnedNodes().add(consentCallBehaviorAction);
+			consentCallBehaviorAction.setName("GDPRConsent_"+process.getBase_NamedElement().getName());
+			consentCallBehaviorAction.setBehavior(newProcess);
+			applyStereotypeToAction(consentCallBehaviorAction, ModelProfileNames.PDPbDProfileName, ModelProfileNames.PDPbD_CallProcess);
+
+			/** Add DataInput and DataOutput pins **/
+			InputPin inPin = UMLFactory.eINSTANCE.createInputPin();
+			OutputPin outPin = UMLFactory.eINSTANCE.createOutputPin();
+			if (inPin != null && outPin!=null) {
+				inPin.setType((Type) consent.getBase_NamedElement());
+				outPin.setType((Type) consent.getBase_NamedElement());
+				inPin.setName("InputPin1");
+				outPin.setName("OutputPin2");
+				consentCallBehaviorAction.getArguments().add(inPin);
+				consentCallBehaviorAction.getResults().add(outPin);
+				applyStereotypeToPin(inPin, ModelProfileNames.PDPbDProfileName, ModelProfileNames.PDPbD_DataInput);
+				applyStereotypeToPin(outPin, ModelProfileNames.PDPbDProfileName, ModelProfileNames.PDPbD_DataOutput);
+
+				/** Connect DataSubject entity to the DataInput pin **/
+				ObjectFlow dataFlowEdge1 = UMLFactory.eINSTANCE.createObjectFlow();
+				if (dataFlowEdge1 !=null) {
+					dataFlowEdge1.setName("Consent_"+selectedDataSubject.getBase_ActivityParameterNode().getName());
+					dataFlowEdge1.setSource(selectedDataSubject.getBase_ActivityParameterNode());
+					dataFlowEdge1.setTarget(inPin);
+					activityDFD.getEdges().add(dataFlowEdge1);
+
+					/** Connect DataOutput pin to Controller entity **/
+					ObjectFlow dataFlowEdge2 = UMLFactory.eINSTANCE.createObjectFlow();
+					if (dataFlowEdge2!=null) {
+						dataFlowEdge2.setName("Consent_"+selectedController.getBase_ActivityParameterNode().getName());
+						dataFlowEdge2.setSource(outPin);
+						dataFlowEdge2.setTarget(selectedController.getBase_ActivityParameterNode());
+						activityDFD.getEdges().add(dataFlowEdge2);
+
+						/** Completing Behavior Process **/
+						ActivityParameterNode parameterIn=UMLFactory.eINSTANCE.createActivityParameterNode();
+						if (parameterIn!=null) {
+							parameterIn.setName(inPin.getName());
+							parameterIn.setType(inPin.getType());
+							newProcess.getOwnedNodes().add(parameterIn);	
+						}
+
+						ActivityParameterNode parameterOut=UMLFactory.eINSTANCE.createActivityParameterNode();
+						if (parameterOut!=null) {
+							parameterOut.setName(outPin.getName());
+							parameterOut.setType(outPin.getType());
+							newProcess.getOwnedNodes().add(parameterOut);	
+						}
+					}
+				}
+			}	
+		}
+	}
+
+
+	/**
+	 * Verify whether the needed profiles have been already loaded in the model
+	 * @param profileList
+	 * @return
+	 */
+	public boolean verifyProfilesApplied(EList<Profile> profileList) {
+		boolean found = false; 
+		int noProfiles = 0;
+		for (Iterator<Profile> profileListIt = profileList.iterator(); profileListIt.hasNext() && noProfiles!=2;) {
+			Profile profile = profileListIt.next();
+			if (profile!=null) {
+				String profileName = profile.getName(); 
+				switch (profileName) {
+				case "pdp4engDesign": 
+					noProfiles++;
+					break;
+
+				case "pdp4engCommonGDPR":
+					noProfiles++;
+					break;
+
+				}
+			}
+		}
+		if (noProfiles==2) {
+			found=true;
+		}
+		return found;
+	}
+
+	/**
+	 * Return the profile with the given name or null elsewhere
+	 * @param profileName
+	 * @return
+	 */
+	public Profile getProfile(String profileName) {
+		Profile profile = null;
+		for (ProfileApplication profileApplication : this.activityDFD.getModel().getProfileApplications()) {
+			profile = profileApplication.getAppliedProfile();
+			if (profile.getName().equals(profileName)){
+				return profile;
+			}
+		}
+		return profile;
+	}
+
+	/**
+	 * Create a Package with the given name.
+	 * @param packageName
+	 */
+	public void createIfMissingPackage(String packageName){
+		PackageableElement targetPackage = this.activityDFD.getModel().getPackagedElement(packageName);
+		if (targetPackage==null || !targetPackage.getName().equals(packageName)){
+			this.activityDFD.getModel().createPackagedElement(packageName, UMLPackage.eINSTANCE.getPackage());
+		}
+	}
+
+
+	/**
+	 * Shows all the Call Process associated to an Activity DFD. Returns the CallProcess selected by the user.
+	 * @return
+	 */
+	CallProcess selectCallProcessFromActivityDFD(String title, String message) {
+		CallProcess selectedCallProcess  = null;
+		EList<Action> selectedCallProcList = new BasicEList<Action>();
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+			EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+			if (elementList!=null && PDPbDprofile!=null) {
+				for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+					Element element = elementListIt.next();
+					EList<Stereotype> elementStypesList = element.getAppliedStereotypes();
+					for (Iterator<Stereotype> elementStypeListIt = elementStypesList.iterator(); elementStypeListIt.hasNext();) {
+						Stereotype stype = elementStypeListIt.next();
+						if (stype!=null && stype.getName().equals(ModelProfileNames.PDPbD_CallProcess)) {
+							if (element instanceof org.eclipse.uml2.uml.Action) {
+								Action actionElmt = (Action) element;
+								System.out.printf("CallProcess Name: "+actionElmt.getName()+"\n");
+								if (!selectedCallProcList.contains(actionElmt)) {
+									selectedCallProcList.add(actionElmt);	
+								}	
+							}
+						}	
+					}
+				}
+			}
+		}
+
+		Object[] objList = new Object[selectedCallProcList.size()];
+		Iterator<Action> selectedElementListIt = selectedCallProcList.iterator();
+		for  (int i=0; selectedElementListIt.hasNext()&& i<objList.length; i++) {
+			Action callProc = selectedElementListIt.next();
+			objList[i] = callProc.getName();
+		}
+
+		ElementListSelectionDialog dialog = new ElementListSelectionDialog(Display.getCurrent().getActiveShell(), new LabelProvider()); 
+		dialog.setElements(objList);
+		dialog.setTitle(title);
+		dialog.setMessage(message);
+		dialog.setHelpAvailable(true);
+
+		if (dialog.open() != Window.OK) {
+			System.out.printf(">> A problem opening the CallProcess Window");
+		}
+
+		Object[] resultList = dialog.getResult();
+		if (resultList!=null && resultList.length>0) {
+			Object result = resultList[0];
+			for  (Iterator<Action> selectedElementListIt1 = selectedCallProcList.iterator(); selectedElementListIt1.hasNext();) {
+				Action callProc = selectedElementListIt1.next();
+				if (callProc.getName().equals(result)){
+					selectedCallProcess = UMLUtil.getStereotypeApplication(callProc,CallProcess.class) ;
+				}
+			}
+		}
+		return selectedCallProcess;
+	}
+
+	/**
+	 * Shows all the External Entities associated to an Activity DFD. Returns the ExternalEntity selected by the user.
+	 * @return
+	 */
+	ExternalEntity selectExternalEntityFromActivityDFD(String title, String message) {
+		ExternalEntity selectedEEntity  = null;
+		EList<ActivityParameterNode> selectedEEntityList = new BasicEList<ActivityParameterNode>();
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+			EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+			if (elementList!=null && PDPbDprofile!=null) {
+				for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+					Element element = elementListIt.next();
+					EList<Stereotype> elementStypesList = element.getAppliedStereotypes();
+					for (Iterator<Stereotype> elementStypeListIt = elementStypesList.iterator(); elementStypeListIt.hasNext();) {
+						Stereotype stype = elementStypeListIt.next();
+						if (stype!=null && stype.getName().equals(ModelProfileNames.PDPbD_ExternalEntity)) {
+							if (element instanceof org.eclipse.uml2.uml.ActivityParameterNode) {
+								ActivityParameterNode activityParameterNodeElmt = (ActivityParameterNode) element;
+								System.out.printf("ExternalEntity Name: "+activityParameterNodeElmt.getName()+"\n");
+								if (!selectedEEntityList.contains(activityParameterNodeElmt)) {
+									selectedEEntityList.add(activityParameterNodeElmt);	
+								}	
+							}
+						}	
+					}
+				}
+			}
+		}
+
+		Object[] objList = new Object[selectedEEntityList.size()];
+		Iterator<ActivityParameterNode> selectedEEntityListIt = selectedEEntityList.iterator();
+		for  (int i=0; selectedEEntityListIt.hasNext()&& i<objList.length; i++) {
+			ActivityParameterNode extEntity = selectedEEntityListIt.next();
+			objList[i] = extEntity.getName();
+		}
+
+		ElementListSelectionDialog dialog = new ElementListSelectionDialog(Display.getCurrent().getActiveShell(), new LabelProvider()); 
+		dialog.setElements(objList);
+		dialog.setTitle(title);
+		dialog.setMessage(message);
+		dialog.setHelpAvailable(true);
+
+		if (dialog.open() != Window.OK) {
+			System.out.printf(">> A problem opening the ExternalEntity Window");
+		}
+
+		Object[] resultList = dialog.getResult();
+		if (resultList!=null && resultList.length>0) {
+			Object result = resultList[0];
+			for  (Iterator<ActivityParameterNode> selectedEEntityListIt1 = selectedEEntityList.iterator(); selectedEEntityListIt1.hasNext();) {
+				ActivityParameterNode activityParamNode = selectedEEntityListIt1.next();
+				if (activityParamNode.getName().equals(result)){
+					selectedEEntity = UMLUtil.getStereotypeApplication(activityParamNode,ExternalEntity.class);
+				}
+			}
+		}
+		return selectedEEntity;
+	}
+
+	/**
+	 * hows all the Data associated to an Activity DFD. Stereotypes the selected Data as Personal and returns them.
+	 * @param title
+	 * @param message
+	 * @return
+	 */
+	PersonalData selectPersonalDataFromActivityDFD(String title, String message) {
+		PersonalData selectedPersonalData  = null;
+		EList<Classifier> selectedPersonalDataList = new BasicEList<Classifier>();
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+			EList<Element> elementList = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Data_PackageName).allOwnedElements();
+			if (elementList!=null && PDPbDprofile!=null) {
+				for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+					Element element = elementListIt.next();
+					EList<Stereotype> elementStypesList = element.getAppliedStereotypes();
+					for (Iterator<Stereotype> elementStypeListIt = elementStypesList.iterator(); elementStypeListIt.hasNext();) {
+						Stereotype stype = elementStypeListIt.next();
+						if (stype!=null && stype.getName().equals(ModelProfileNames.commonGDPR_PersonalData)) {
+							if (element instanceof org.eclipse.uml2.uml.Classifier) {
+								Classifier classElmt = (Classifier) element;
+								System.out.printf("PersonalData Name: "+classElmt.getName()+"\n");
+								if (!selectedPersonalDataList.contains(classElmt)) {
+									selectedPersonalDataList.add(classElmt);	
+								}	
+							}
+						}	
+					}
+				}
+			}
+		}
+
+		Object[] objList = new Object[selectedPersonalDataList.size()];
+		Iterator<Classifier> selectedPersonalDataListIt = selectedPersonalDataList.iterator();
+		for  (int i=0; selectedPersonalDataListIt.hasNext()&& i<objList.length; i++) {
+			Classifier extEntity = selectedPersonalDataListIt.next();
+			objList[i] = extEntity.getName();
+		}
+
+		ElementListSelectionDialog dialog = new ElementListSelectionDialog(Display.getCurrent().getActiveShell(), new LabelProvider()); 
+		dialog.setElements(objList);
+		dialog.setTitle(title);
+		dialog.setMessage(message);
+		dialog.setHelpAvailable(true);
+
+		if (dialog.open() != Window.OK) {
+			System.out.printf(">> A problem opening the PersonalData Window");
+		}
+
+		Object[] resultList = dialog.getResult();
+		if (resultList!=null && resultList.length>0) {
+			Object result = resultList[0];
+			for  (Iterator<Classifier> selectedPersonalDataListIt1 = selectedPersonalDataList.iterator(); selectedPersonalDataListIt1.hasNext();) {
+				Classifier activityParamNode = selectedPersonalDataListIt1.next();
+				if (activityParamNode.getName().equals(result)){
+					selectedPersonalData = UMLUtil.getStereotypeApplication(activityParamNode,PersonalData.class);
+				}
+			}
+		}
+		return selectedPersonalData;
+	}
+
+	/**
+	 * Create a Purpose with the given name within the Stakeholders package
+	 * @param name
+	 * @return
+	 */
+	Purpose createPurpose(String name) {
+		Purpose purpose = null;
+		createIfMissingPackage(ModelPackageNames.Stakeholder_PackageName);
+		Classifier purposeCls = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Stakeholder_PackageName).
+				createOwnedClass(name, false);
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+			if (commonProfile!=null){
+				Stereotype purposeStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Purpose);
+				if (purposeStype!=null){
+					UMLUtil.safeApplyStereotype(purposeCls, purposeStype);
+					purpose = UMLUtil.getStereotypeApplication(purposeCls, Purpose.class);
+				}
+			}
+		}
+		return purpose;
+	}
+
+	/**
+	 * Create an Entity with the given name within the Stakeholders package
+	 * @param name
+	 * @return
+	 */
+	Entity createEntity(String name) {
+		Entity entity = null;
+		createIfMissingPackage(ModelPackageNames.Stakeholder_PackageName);
+		Classifier entityCls = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Stakeholder_PackageName).
+				createOwnedClass(name, false);
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile commonProfile = getProfile(ModelProfileNames.PDPbDProfileName);
+			if (commonProfile!=null){
+				Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.PDPbD_Entity);
+				if (entityStype!=null){
+					UMLUtil.safeApplyStereotype(entityCls, entityStype);
+					entity = UMLUtil.getStereotypeApplication(entityCls, Entity.class);
+				}
+			}
+		}
+		return entity;
+	}
+
+	/**
+	 * Create a Consent with the given name within the Data package
+	 * @param name
+	 * @return
+	 */
+	Consent createConsent(String name) {
+		Consent consent = null;
+		createIfMissingPackage(ModelPackageNames.Data_PackageName);
+		Classifier entityCls = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Data_PackageName).
+				createOwnedClass(name, false);
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+			if (commonProfile!=null){
+				Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Consent);
+				if (entityStype!=null){
+					UMLUtil.safeApplyStereotype(entityCls, entityStype);
+					consent = UMLUtil.getStereotypeApplication(entityCls, Consent.class);
+				}
+			}
+		}
+		return consent;
+	}
+
+	/**
+	 * Get the controller of an Entity
+	 * @param entityCls
+	 * @return
+	 */
+	Controller getController(NamedElement entityCls) {
+		Controller controller = null;
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+			if (commonProfile!=null){
+				Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Controller);
+				if (entityStype!=null){
+					UMLUtil.safeApplyStereotype(entityCls, entityStype);
+					controller = UMLUtil.getStereotypeApplication(entityCls, Controller.class);
+				}
+			}
+		}
+		return controller;
+	}
+
+	/**
+	 * Get the processor of an Entity
+	 * @param entityCls
+	 * @return
+	 */
+	Processor getProcessor(NamedElement entityCls) {
+		Processor processor = null;
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+			if (commonProfile!=null){
+				Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Processor);
+				if (entityStype!=null){
+					UMLUtil.safeApplyStereotype(entityCls, entityStype);
+					processor = UMLUtil.getStereotypeApplication(entityCls, Processor.class);
+				}
+			}
+		}
+		return processor;
+	}
+
+	/**
+	 * Get the Data Subject of an Entity
+	 * @param entityCls
+	 * @return
+	 */
+	DataSubject getDataSubject(NamedElement entityCls) {
+		DataSubject dataSubject = null;
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+			if (commonProfile!=null){
+				Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_DataSubject);
+				if (entityStype!=null){
+					UMLUtil.safeApplyStereotype(entityCls, entityStype);
+					dataSubject = UMLUtil.getStereotypeApplication(entityCls, DataSubject.class);
+				}
+			}
+		}
+		return dataSubject;
+	}
+
+	/**
+	 * Get the process of a CallBehaviorAction
+	 * @param entityCls
+	 * @return
+	 */
+	Process getProcess(CallBehaviorAction callBehaviorAction) {
+		Process process = null;
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		if (verifyProfilesApplied(profileList)) {
+			Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+			if (commonProfile!=null){
+				Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Process);
+				if (entityStype!=null){
+					UMLUtil.safeApplyStereotype(callBehaviorAction, entityStype);
+					process = UMLUtil.getStereotypeApplication(callBehaviorAction, Process.class);
+				}
+			}
+		}
+		return process;
+	}
+
+	/**
+	 * Safely apply the a stereotype to an ActivityParameterNode
+	 * @param classifier
+	 * @param stereotype
+	 */
+	public void applyStereotypeToActivityParameterNode(ActivityParameterNode activityPNode, String profileName, String stereotypeName) {
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		EList<Stereotype> appliedStypes = activityPNode.getAppliedStereotypes();
+		if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && activityPNode!=null) {
+			Profile profile = getProfile(profileName);
+			if (profile!=null){
+				Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+				if (stereotype!=null && !appliedStypes.contains(stereotype)){
+					UMLUtil.safeApplyStereotype(activityPNode, stereotype);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Safely apply the a stereotype to a Classifier
+	 * @param classifier
+	 * @param profileName
+	 * @param stereotypeName
+	 */
+	public void applyStereotypeToClassifier(Classifier classifier, String profileName, String stereotypeName) {
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		EList<Stereotype> appliedStypes = classifier.getAppliedStereotypes();
+		if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && classifier!=null) {
+			Profile profile = getProfile(profileName);
+			if (profile!=null){
+				Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+				if (stereotype!=null && !appliedStypes.contains(stereotype)){
+					UMLUtil.safeApplyStereotype(classifier, stereotype);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Safely apply the a stereotype to a NamedElement
+	 * @param namedElement
+	 * @param profileName
+	 * @param stereotypeName
+	 */
+	public void applyStereotypeToNamedElement(NamedElement namedElement, String profileName, String stereotypeName) {
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		EList<Stereotype> appliedStypes = namedElement.getAppliedStereotypes();
+		if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && namedElement!=null) {
+			Profile profile = getProfile(profileName);
+			if (profile!=null){
+				Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+				if (stereotype!=null && !appliedStypes.contains(stereotype)){
+					UMLUtil.safeApplyStereotype(namedElement, stereotype);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Safely apply the a stereotype to an Action node
+	 * @param action
+	 * @param profileName
+	 * @param stereotypeName
+	 */
+	public void applyStereotypeToAction(Action action, String profileName, String stereotypeName) {
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		EList<Stereotype> appliedStypes = action.getAppliedStereotypes();
+		if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && action!=null) {
+			Profile profile = getProfile(profileName);
+			if (profile!=null){
+				Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+				if (stereotype!=null && !appliedStypes.contains(stereotype)){
+					UMLUtil.safeApplyStereotype(action, stereotype);
+				}
+			}
+		}
+	}
+
+	public void applyStereotypeToPin(Pin pin, String profileName, String stereotypeName) {
+		EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+		EList<Stereotype> appliedStypes = pin.getAppliedStereotypes();
+		if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && pin!=null) {
+			Profile profile = getProfile(profileName);
+			if (profile!=null){
+				Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+				if (stereotype!=null && !appliedStypes.contains(stereotype)){
+					UMLUtil.safeApplyStereotype(pin, stereotype);
+				}
+			}
+		}
+	}
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.project
new file mode 100644
index 0000000..e88cf2d
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.pdp4eng.designer.profile</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a285847
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.profile;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.profile.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.22.0,3.0.0)",
+ org.eclipse.uml2.types;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.papyrus.designer.profile
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign,
+ org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl,
+ org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.util
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 30, 2017</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/build.properties
new file mode 100644
index 0000000..2c23fde
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               model/,\
+               plugin.properties,\
+               plugin.xml
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.ecore b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.ecore
new file mode 100644
index 0000000..75f9570
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.ecore
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="pdp4engDesign" nsURI="http://org.eclipse.papyrus.pdp4eng.designer.profile"
+    nsPrefix="pdp4engDesign">
+  <eClassifiers xsi:type="ecore:EClass" name="OpaqueData" eSuperTypes="#//DataType">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="OpaqueData are data which are not directly interpretable: further tokens are necessary to transform them into a readable form. This data type can be useful to model special data types like for instance ciphered data."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DataType">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_PrimitiveType" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//PrimitiveType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="isPersonalData">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Likelihood interval to be &#xA;written as a Java constraint"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="likelihood" ordered="false"
+        eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_NamedElement" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//NamedElement"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DataOutput">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Input and output pins can play double role:&#xA;- As ports&#xA;- As parameters"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_OutputPin" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//OutputPin"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Parameter" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Data">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DataLink" eSuperTypes="#//Data">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="path" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//DataType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CompositeData" eSuperTypes="#//Data"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Table" eSuperTypes="#//Data"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ExternalEntity">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_ActivityParameterNode"
+        ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//ActivityParameterNode"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="entity" ordered="false"
+        eType="#//Entity"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Entity">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_NamedElement" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//NamedElement"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DataStore">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_DataStoreNode" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//DataStoreNode"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DataInput">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_InputPin" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//InputPin"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Parameter" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Process">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Activity" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Activity"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CallProcess">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallBehaviorAction"
+        ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallBehaviorAction"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_OpaqueAction" ordered="false"
+        eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//OpaqueAction"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SmartGridFrame" eSuperTypes="#//Data">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="concentratorID" ordered="false"
+        eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="userName" ordered="false"
+        eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="postcode" ordered="false"
+        eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="consumption" ordered="false"
+        eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="crc" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.genmodel b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.genmodel
new file mode 100644
index 0000000..050223b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.genmodel
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+    copyrightText=" Copyright (c)2020 CEA LIST, Committer Name, and others.&#xA;&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License 2.0&#xA; which accompanies this distribution, and is available at&#xA; https://www.eclipse.org/legal/epl-2.0/&#xA;&#xA; SPDX-License-Identifier: EPL-2.0&#xA;&#xA; Contributors:&#xA; CEA LIST - Initial API and implementation&#xA; Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr&#xA; Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr &#xA;"
+    modelDirectory="/org.eclipse.papyrus.pdp4eng.designer.profile/src" modelPluginID="org.eclipse.papyrus.designer.profile"
+    modelName="pdp4engDesign" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+    usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+    operationReflection="true" importOrganizing="true">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+    <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="REPORT"/>
+    <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+    <details key="NON_API_INVARIANTS" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+    <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+    <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="VALIDATION_DELEGATES" value="PROCESS"/>
+  </genAnnotations>
+  <foreignModel>pdp4engDesign.profile.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="pdp4engDesign" basePackage="org.eclipse.papyrus.pdp4eng.designer.profile"
+      disposableProviderFactory="true" ecorePackage="pdp4engDesign.ecore#/">
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//OpaqueData"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataType">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataType/base_PrimitiveType"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//isPersonalData">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//isPersonalData/likelihood"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//isPersonalData/base_NamedElement"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//isPersonalData/base_Class"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataOutput">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataOutput/base_OutputPin"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataOutput/base_Parameter"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Data">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//Data/base_Class"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataLink">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//DataLink/path"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataLink/type"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//CompositeData"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Table"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//ExternalEntity">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//ExternalEntity/base_ActivityParameterNode"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//ExternalEntity/entity"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Entity">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//Entity/base_NamedElement"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataStore">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataStore/base_DataStoreNode"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataInput">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataInput/base_InputPin"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataInput/base_Parameter"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Process">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//Process/base_Activity"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//CallProcess">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//CallProcess/base_CallBehaviorAction"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//CallProcess/base_OpaqueAction"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//SmartGridFrame">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/concentratorID"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/userName"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/postcode"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/date"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/consumption"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/crc"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/id"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.di b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.di
new file mode 100644
index 0000000..4f26340
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.uml.architecture.Profile"/>

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.notation b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.notation
new file mode 100644
index 0000000..ce23978
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.notation
@@ -0,0 +1,1040 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_KDmV4Nf2Eemg9YvAnhgu3w" type="PapyrusUMLProfileDiagram" name="Profile Diagram" measurementUnit="Pixel">

+  <children xmi:type="notation:Shape" xmi:id="_VhNzQNf3Eemg9YvAnhgu3w" type="Class_MetaclassShape">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VhQPgNf3Eemg9YvAnhgu3w" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2kNf3Eemg9YvAnhgu3w" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2kdf3Eemg9YvAnhgu3w" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2ktf3Eemg9YvAnhgu3w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2k9f3Eemg9YvAnhgu3w" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2lNf3Eemg9YvAnhgu3w" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_VhPBYNf3Eemg9YvAnhgu3w" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VhPocNf3Eemg9YvAnhgu3w" x="240" y="40" width="141" height="61"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_a63_kNf3Eemg9YvAnhgu3w" type="Class_MetaclassShape">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a64motf3Eemg9YvAnhgu3w" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mo9f3Eemg9YvAnhgu3w" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mpNf3Eemg9YvAnhgu3w" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mpdf3Eemg9YvAnhgu3w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mptf3Eemg9YvAnhgu3w" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a65NsNf3Eemg9YvAnhgu3w" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_a64moNf3Eemg9YvAnhgu3w" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a64modf3Eemg9YvAnhgu3w" x="620" y="40" width="141" height="61"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_AGLYkNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_AGL_oNf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_AGL_odf4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_AGL_otf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_AGL_o9f4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_AGL_pNf4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AGL_pdf4Eemg9YvAnhgu3w"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_AGL_ptf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_AGL_p9f4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_AGL_qNf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_AGL_qdf4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AGL_qtf4Eemg9YvAnhgu3w"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_AGAZcNf4Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AGLYkdf4Eemg9YvAnhgu3w" x="640" y="180" width="121"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_JdiwkNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_Jdiwktf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_Jdiwk9f4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_JdiwlNf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_Jdiwldf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_Jdiwltf4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jdiwl9f4Eemg9YvAnhgu3w"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_JdiwmNf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_Jdiwmdf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_Jdiwmtf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_Jdiwm9f4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JdiwnNf4Eemg9YvAnhgu3w"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_Jdg7YNf4Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jdiwkdf4Eemg9YvAnhgu3w" x="240" y="160" width="121"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_Sib4gNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_Sib4gtf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_SicfkNf4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_Sicfkdf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_Sicfktf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_Sicfk9f4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SicflNf4Eemg9YvAnhgu3w"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_Sicfldf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_Sicfltf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_Sicfl9f4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_SicfmNf4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sicfmdf4Eemg9YvAnhgu3w"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_SiXAANf4Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sib4gdf4Eemg9YvAnhgu3w" x="240" y="360" width="121"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_gFktYNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_gFktYtf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_gFktY9f4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">

+      <children xmi:type="notation:Shape" xmi:id="_zwwekNf4Eemg9YvAnhgu3w" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_zwn7sNf4Eemg9YvAnhgu3w"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zwwekdf4Eemg9YvAnhgu3w"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_hWJvANf5Eemg9YvAnhgu3w" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_hV4CMNf5Eemg9YvAnhgu3w"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hWJvAdf5Eemg9YvAnhgu3w"/>

+      </children>

+      <styles xmi:type="notation:TitleStyle" xmi:id="_gFktZNf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_gFktZdf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_gFktZtf4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFktZ9f4Eemg9YvAnhgu3w"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_gFktaNf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_gFktadf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_gFktatf4Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_gFkta9f4Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFktbNf4Eemg9YvAnhgu3w"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_gFi4MNf4Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFktYdf4Eemg9YvAnhgu3w" x="400" y="520" width="181"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NK26YNf5Eemg9YvAnhgu3w" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_NK3hcNf5Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_NK3hcdf5Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_NK3hctf5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_NK3hc9f5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_NK3hdNf5Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NK3hddf5Eemg9YvAnhgu3w"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_NK4IgNf5Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_NK4Igdf5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_NK4Igtf5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_NK4Ig9f5Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NK4IhNf5Eemg9YvAnhgu3w"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_NKwzwNf5Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NK26Ydf5Eemg9YvAnhgu3w" x="620" y="520" width="161" height="121"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_VQwqgNf5Eemg9YvAnhgu3w" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_VQxRkNf5Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_VQxRkdf5Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_VQxRktf5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_VQxRk9f5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_VQxRlNf5Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VQxRldf5Eemg9YvAnhgu3w"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_VQxRltf5Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_VQxRl9f5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_VQxRmNf5Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_VQxRmdf5Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VQxRmtf5Eemg9YvAnhgu3w"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_VQu1UNf5Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VQwqgdf5Eemg9YvAnhgu3w" x="820" y="520" width="141" height="121"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_I3ytQNf6Eemg9YvAnhgu3w" type="Class_MetaclassShape">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I3ytRNf6Eemg9YvAnhgu3w" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUUNf6Eemg9YvAnhgu3w" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUUdf6Eemg9YvAnhgu3w" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUUtf6Eemg9YvAnhgu3w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUU9f6Eemg9YvAnhgu3w" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUVNf6Eemg9YvAnhgu3w" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_I3ytQtf6Eemg9YvAnhgu3w" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I3ytQ9f6Eemg9YvAnhgu3w" x="920" y="40" width="141" height="61"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_P0D70Nf6Eemg9YvAnhgu3w" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_P0Ei4Nf6Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_P0Ei4df6Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">

+      <children xmi:type="notation:Shape" xmi:id="_R5FHkNf6Eemg9YvAnhgu3w" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_R4yMoNf6Eemg9YvAnhgu3w"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_R5FHkdf6Eemg9YvAnhgu3w"/>

+      </children>

+      <styles xmi:type="notation:TitleStyle" xmi:id="_P0Ei4tf6Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_P0Ei49f6Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_P0Ei5Nf6Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P0Ei5df6Eemg9YvAnhgu3w"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_P0Ei5tf6Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_P0Ei59f6Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_P0Ei6Nf6Eemg9YvAnhgu3w"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_P0Ei6df6Eemg9YvAnhgu3w"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P0Ei6tf6Eemg9YvAnhgu3w"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_P0ARcNf6Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P0D70df6Eemg9YvAnhgu3w" x="900" y="180" width="201"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_xKzMINf8Eemg9YvAnhgu3w" type="Comment_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_xKzzMNf8Eemg9YvAnhgu3w" type="Comment_BodyLabel"/>

+    <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_xKiGYNf8Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xKzMIdf8Eemg9YvAnhgu3w" x="380" y="120" width="241" height="61"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_YcH2cNf9Eemg9YvAnhgu3w" type="Comment_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_YcIdgNf9Eemg9YvAnhgu3w" type="Comment_BodyLabel"/>

+    <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_YcFaMNf9Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YcH2cdf9Eemg9YvAnhgu3w" x="100" y="520" width="281"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_2NVccNf9Eemg9YvAnhgu3w" type="Comment_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_2NVcctf9Eemg9YvAnhgu3w" type="Comment_BodyLabel"/>

+    <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_2NU1YNf9Eemg9YvAnhgu3w"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2NVccdf9Eemg9YvAnhgu3w" x="440" y="400" width="221" height="41"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_MUTKkN1DEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MUVm0N1DEemRdeFT-FlIPQ" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm0d1DEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm0t1DEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm091DEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm1N1DEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm1d1DEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_MUUYsN1DEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MUU_wN1DEemRdeFT-FlIPQ" x="2160" y="40" width="181" height="61"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_QtibsN1DEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">

+    <children xmi:type="notation:DecorationNode" xmi:id="_QtjCwN1DEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_QtjCwd1DEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_QtjCwt1DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_QtjCw91DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_QtjCxN1DEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QtjCxd1DEemRdeFT-FlIPQ"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_QtjCxt1DEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_QtjCx91DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_QtjCyN1DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_QtjCyd1DEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QtjCyt1DEemRdeFT-FlIPQ"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_QtdjMN1DEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qtibsd1DEemRdeFT-FlIPQ" x="2160" y="180" width="181"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_bd4_4N1DEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bd5m8t1DEemRdeFT-FlIPQ" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m891DEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m9N1DEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m9d1DEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m9t1DEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m991DEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_bd5m8N1DEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bd5m8d1DEemRdeFT-FlIPQ" x="1360" y="40" width="160" height="60"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_iR0x0N1DEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">

+    <children xmi:type="notation:DecorationNode" xmi:id="_iR1Y4N1DEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_iR1Y4d1DEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_iR1Y4t1DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_iR1Y491DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_iR1Y5N1DEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iR1Y5d1DEemRdeFT-FlIPQ"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_iR1Y5t1DEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_iR1Y591DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_iR1Y6N1DEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_iR1Y6d1DEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iR1Y6t1DEemRdeFT-FlIPQ"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_iRy8oN1DEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iR0x0d1DEemRdeFT-FlIPQ" x="1360" y="180" width="160"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_HUVbMN1EEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HUWCQt1EEemRdeFT-FlIPQ" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCQ91EEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCRN1EEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCRd1EEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCRt1EEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCR91EEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_HUWCQN1EEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HUWCQd1EEemRdeFT-FlIPQ" x="1580" y="40" width="120" height="60"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_My5VoN1EEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">

+    <children xmi:type="notation:DecorationNode" xmi:id="_My58sN1EEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_My58sd1EEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_My58st1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_My58s91EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_My58tN1EEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_My58td1EEemRdeFT-FlIPQ"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_My58tt1EEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_My58t91EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_My58uN1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_My58ud1EEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_My58ut1EEemRdeFT-FlIPQ"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_My4ukN1EEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_My5Vod1EEemRdeFT-FlIPQ" x="1580" y="180" width="120"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_U9Yq0N1EEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U9ZR4t1EEemRdeFT-FlIPQ" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR491EEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR5N1EEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR5d1EEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR5t1EEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR591EEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_U9ZR4N1EEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U9ZR4d1EEemRdeFT-FlIPQ" x="1740" y="40" width="120" height="60"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_bdMm4N1EEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">

+    <children xmi:type="notation:DecorationNode" xmi:id="_bdMm4t1EEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_bdMm491EEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_bdMm5N1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_bdMm5d1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_bdMm5t1EEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bdMm591EEemRdeFT-FlIPQ"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_bdMm6N1EEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_bdMm6d1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_bdMm6t1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_bdMm691EEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bdMm7N1EEemRdeFT-FlIPQ"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_bdLYwN1EEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bdMm4d1EEemRdeFT-FlIPQ" x="1740" y="180" width="120"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_7FWgYN1EEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7FXHct1EEemRdeFT-FlIPQ" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHc91EEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHdN1EEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHdd1EEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHdt1EEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHd91EEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_7FXHcN1EEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FXHcd1EEemRdeFT-FlIPQ" x="1920" y="40" width="160" height="60"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="__BGkQN1EEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">

+    <children xmi:type="notation:DecorationNode" xmi:id="__BGkQt1EEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="__BGkQ91EEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="__BGkRN1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="__BGkRd1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="__BGkRt1EEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__BGkR91EEemRdeFT-FlIPQ"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="__BGkSN1EEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="__BGkSd1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="__BGkSt1EEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="__BGkS91EEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__BGkTN1EEemRdeFT-FlIPQ"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#__BFWIN1EEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="__BGkQd1EEemRdeFT-FlIPQ" x="1940" y="180" width="140"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_U01g4N1GEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U01g5N1GEemRdeFT-FlIPQ" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g5d1GEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g5t1GEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g591GEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g6N1GEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g6d1GEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_U01g4t1GEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U01g491GEemRdeFT-FlIPQ" x="1360" y="420" width="160" height="60"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_aLMhkN1GEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">

+    <children xmi:type="notation:DecorationNode" xmi:id="_aLMhkt1GEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_aLMhk91GEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_aLMhlN1GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_aLMhld1GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_aLMhlt1GEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aLMhl91GEemRdeFT-FlIPQ"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_aLNIoN1GEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_aLNIod1GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_aLNIot1GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_aLNIo91GEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aLNIpN1GEemRdeFT-FlIPQ"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_aLL6gN1GEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aLMhkd1GEemRdeFT-FlIPQ" x="1380" y="560" width="140"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_yP4poN1GEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yP4ppN1GEemRdeFT-FlIPQ" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4ppd1GEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4ppt1GEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4pp91GEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4pqN1GEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4pqd1GEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_yP4pot1GEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yP4po91GEemRdeFT-FlIPQ" x="1580" y="420" width="160" height="60"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_93zvAN1GEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">

+    <children xmi:type="notation:DecorationNode" xmi:id="_930WEN1GEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_930WEd1GEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_930WEt1GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_930WE91GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_930WFN1GEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_930WFd1GEemRdeFT-FlIPQ"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_930WFt1GEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_930WF91GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_930WGN1GEemRdeFT-FlIPQ"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_930WGd1GEemRdeFT-FlIPQ"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_930WGt1GEemRdeFT-FlIPQ"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_93zH8N1GEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_93zvAd1GEemRdeFT-FlIPQ" x="1600" y="560" width="140"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_5OpWEN1HEemRdeFT-FlIPQ" type="Comment_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_5Op9IN1HEemRdeFT-FlIPQ" type="Comment_BodyLabel"/>

+    <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_5Ong4N1HEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5OpWEd1HEemRdeFT-FlIPQ" x="-1" y="40" width="201"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="__lj00N1HEemRdeFT-FlIPQ" type="Comment_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="__lj00t1HEemRdeFT-FlIPQ" type="Comment_BodyLabel"/>

+    <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#__lh_oN1HEemRdeFT-FlIPQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="__lj00d1HEemRdeFT-FlIPQ" x="1111" y="40" width="209"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_wRCB8N3jEemd764Om4vVaw" type="Stereotype_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_wRD3IN3jEemd764Om4vVaw" type="Stereotype_NameLabel"/>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_wRD3Id3jEemd764Om4vVaw" type="Stereotype_AttributeCompartment">

+      <children xmi:type="notation:Shape" xmi:id="_6dOJIN3jEemd764Om4vVaw" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_6Qn3kN3jEemd764Om4vVaw"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_6dOJId3jEemd764Om4vVaw"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_VWn0gN3kEemd764Om4vVaw" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_VKQzgN3kEemd764Om4vVaw"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_VWn0gd3kEemd764Om4vVaw"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_MB9q4N3nEemd764Om4vVaw" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_L1ulsN3nEemd764Om4vVaw"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MB9q4d3nEemd764Om4vVaw"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_qYwqMN3nEemd764Om4vVaw" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_qMP4MN3nEemd764Om4vVaw"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_qYwqMd3nEemd764Om4vVaw"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_-3uowN3nEemd764Om4vVaw" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_-rnfYN3nEemd764Om4vVaw"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-3uowd3nEemd764Om4vVaw"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_9UrsMN3oEemd764Om4vVaw" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_9IPLoN3oEemd764Om4vVaw"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9UrsMd3oEemd764Om4vVaw"/>

+      </children>

+      <children xmi:type="notation:Shape" xmi:id="_TIyNsN4VEemd764Om4vVaw" type="Property_ClassAttributeLabel">

+        <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_S6R3oN4VEemd764Om4vVaw"/>

+        <layoutConstraint xmi:type="notation:Location" xmi:id="_TIyNsd4VEemd764Om4vVaw"/>

+      </children>

+      <styles xmi:type="notation:TitleStyle" xmi:id="_wRD3It3jEemd764Om4vVaw"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_wRD3I93jEemd764Om4vVaw"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_wRD3JN3jEemd764Om4vVaw"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wRD3Jd3jEemd764Om4vVaw"/>

+    </children>

+    <children xmi:type="notation:BasicCompartment" xmi:id="_wRD3Jt3jEemd764Om4vVaw" type="Stereotype_OperationCompartment">

+      <styles xmi:type="notation:TitleStyle" xmi:id="_wRD3J93jEemd764Om4vVaw"/>

+      <styles xmi:type="notation:SortingStyle" xmi:id="_wRD3KN3jEemd764Om4vVaw"/>

+      <styles xmi:type="notation:FilteringStyle" xmi:id="_wRD3Kd3jEemd764Om4vVaw"/>

+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wRD3Kt3jEemd764Om4vVaw"/>

+    </children>

+    <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_wQLtYN3jEemd764Om4vVaw"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wRCB8d3jEemd764Om4vVaw" x="720" y="720" width="241" height="180"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_DDHz8N_REemY2N9mLr0t_A" type="Comment_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_DDKQMN_REemY2N9mLr0t_A" type="Comment_BodyLabel"/>

+    <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_DCIVcN_REemY2N9mLr0t_A"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDHz8d_REemY2N9mLr0t_A" x="1120" y="180" height="41"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_Ll_rADw2Eeq4CulPkgdiyw" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LmCuUDw2Eeq4CulPkgdiyw" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYDw2Eeq4CulPkgdiyw" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYTw2Eeq4CulPkgdiyw" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYjw2Eeq4CulPkgdiyw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYzw2Eeq4CulPkgdiyw" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVZDw2Eeq4CulPkgdiyw" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_LmCHQDw2Eeq4CulPkgdiyw" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LmCHQTw2Eeq4CulPkgdiyw" x="1660" y="-80" width="121" height="61"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_tzSTYDw5EeqAXbhiSoKbXQ" type="Comment_Shape">

+    <children xmi:type="notation:DecorationNode" xmi:id="_tzUIkDw5EeqAXbhiSoKbXQ" type="Comment_BodyLabel"/>

+    <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_tyS04Dw5EeqAXbhiSoKbXQ"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tzSTYTw5EeqAXbhiSoKbXQ" x="1820" y="340" width="201"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_0w--MFQHEeqg5faUSU0D9Q" type="Class_MetaclassShape" fillColor="12621752">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0xAzYFQHEeqg5faUSU0D9Q" source="Stereotype_Annotation">

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBacFQHEeqg5faUSU0D9Q" key="StereotypeWithQualifiedNameList" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBacVQHEeqg5faUSU0D9Q" key="StereotypeList" value="StandardProfile::Metaclass"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBaclQHEeqg5faUSU0D9Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBac1QHEeqg5faUSU0D9Q" key="PropStereoDisplay" value=""/>

+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBadFQHEeqg5faUSU0D9Q" key="StereotypePropertyLocation" value="Compartment"/>

+    </eAnnotations>

+    <children xmi:type="notation:DecorationNode" xmi:id="_0w_lQFQHEeqg5faUSU0D9Q" type="Class_MetaclassNameLabel"/>

+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0xAMUFQHEeqg5faUSU0D9Q" x="1780" y="420" width="141" height="61"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_Nq0y4FSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_Nq0y4VSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nq0y41SHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nq0y4lSHEeq7oNgDaAroEA" x="440" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NrAZEFSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_NrAZEVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NrBAIFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NrAZElSHEeq7oNgDaAroEA" x="820" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NreTIFSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_NreTIVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NreTI1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NreTIlSHEeq7oNgDaAroEA" x="1120" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NruKw1SHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_NruKxFSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NruKxlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NruKxVSHEeq7oNgDaAroEA" x="2360" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_Nr_QgFSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_Nr_QgVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nr_3kFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nr_QglSHEeq7oNgDaAroEA" x="1560" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NsPvMFSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_NsPvMVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NsPvM1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NsPvMlSHEeq7oNgDaAroEA" x="1780" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_Nsfm0FSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_Nsfm0VSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsfm01SHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nsfm0lSHEeq7oNgDaAroEA" x="1940" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_Nsu3YFSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_Nsu3YVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsu3Y1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nsu3YlSHEeq7oNgDaAroEA" x="2120" y="40"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_Ns5Pc1SHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_Ns5PdFSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ns5PdlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ns5PdVSHEeq7oNgDaAroEA" x="1560" y="420"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NtDng1SHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_NtDnhFSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtDnhlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NtDnhVSHEeq7oNgDaAroEA" x="1780" y="420"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NtXJgFSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_NtXJgVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtXJg1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NtXJglSHEeq7oNgDaAroEA" x="1860" y="-80"/>

+  </children>

+  <children xmi:type="notation:Shape" xmi:id="_NtivsFSHEeq7oNgDaAroEA" type="StereotypeComment">

+    <styles xmi:type="notation:TitleStyle" xmi:id="_NtivsVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ntivs1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NtivslSHEeq7oNgDaAroEA" x="1980" y="420"/>

+  </children>

+  <styles xmi:type="notation:StringValueStyle" xmi:id="_KDmV4df2Eemg9YvAnhgu3w" name="diagram_compatibility_version" stringValue="1.4.0"/>

+  <styles xmi:type="notation:DiagramStyle" xmi:id="_KDmV4tf2Eemg9YvAnhgu3w"/>

+  <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_KDmV49f2Eemg9YvAnhgu3w" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">

+    <owner xmi:type="uml:Profile" href="pdp4engDesign.profile.uml#_KCC2sNf2Eemg9YvAnhgu3w"/>

+  </styles>

+  <element xmi:type="uml:Profile" href="pdp4engDesign.profile.uml#_KCC2sNf2Eemg9YvAnhgu3w"/>

+  <edges xmi:type="notation:Connector" xmi:id="_DICAANf4Eemg9YvAnhgu3w" type="Extension_Edge" source="_AGLYkNf4Eemg9YvAnhgu3w" target="_a63_kNf3Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="_DICAAdf4Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_DHt28Nf4Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DICAAtf4Eemg9YvAnhgu3w" points="[700, 180, -643984, -643984]$[700, 101, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DIM_INf4Eemg9YvAnhgu3w" id="(0.49586776859504134,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DIM_Idf4Eemg9YvAnhgu3w" id="(0.5673758865248227,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_M0MjUNf4Eemg9YvAnhgu3w" type="Extension_Edge" source="_JdiwkNf4Eemg9YvAnhgu3w" target="_VhNzQNf3Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="_M0MjUdf4Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_M0BkMNf4Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_M0MjUtf4Eemg9YvAnhgu3w" points="[300, 160, -643984, -643984]$[300, 101, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M0YwkNf4Eemg9YvAnhgu3w" id="(0.49586776859504134,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M0Ywkdf4Eemg9YvAnhgu3w" id="(0.425531914893617,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_VA10oNf4Eemg9YvAnhgu3w" type="Generalization_Edge" source="_Sib4gNf4Eemg9YvAnhgu3w" target="_JdiwkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_VA2bsNf4Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_VA2bsdf4Eemg9YvAnhgu3w" y="60"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_VA10odf4Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_VAuf4Nf4Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VA10otf4Eemg9YvAnhgu3w" points="[300, 360, -643984, -643984]$[300, 260, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VBLy4Nf4Eemg9YvAnhgu3w" id="(0.49586776859504134,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VBLy4df4Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_mPdcwNf4Eemg9YvAnhgu3w" type="Generalization_Edge" source="_gFktYNf4Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_mPdcw9f4Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_nEQWwNf4Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_mPdcxNf4Eemg9YvAnhgu3w" y="179"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_mPdcwdf4Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_mPWIANf4Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mPdcwtf4Eemg9YvAnhgu3w" points="[480, 520, -643984, -643984]$[480, 480, -643984, -643984]$[700, 480, -643984, -643984]$[700, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mPrfMNf4Eemg9YvAnhgu3w" id="(0.4419889502762431,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mPrfMdf4Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_PyfrANf5Eemg9YvAnhgu3w" type="Generalization_Edge" source="_NK26YNf5Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_PyfrA9f5Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_RYL2cNf5Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_PyfrBNf5Eemg9YvAnhgu3w" x="-1" y="59"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_PyfrAdf5Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_PyXvMNf5Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PyfrAtf5Eemg9YvAnhgu3w" points="[720, 400, -643984, -643984]$[700, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PywwwNf5Eemg9YvAnhgu3w" id="(0.4968944099378882,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pywwwdf5Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_W_nZANf5Eemg9YvAnhgu3w" type="Generalization_Edge" source="_VQwqgNf5Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_W_oAENf5Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XZ_n4Nf5Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_W_oAEdf5Eemg9YvAnhgu3w" x="-1" y="58"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_W_nZAdf5Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_W_YvgNf5Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_W_nZAtf5Eemg9YvAnhgu3w" points="[900, 520, -643984, -643984]$[900, 480, -643984, -643984]$[700, 480, -643984, -643984]$[700, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W_6T8Nf5Eemg9YvAnhgu3w" id="(0.5673758865248227,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W_6T8df5Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_kLa2gNf6Eemg9YvAnhgu3w" type="Extension_Edge" source="_P0D70Nf6Eemg9YvAnhgu3w" target="_I3ytQNf6Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="_kLa2gdf6Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_kLP3YNf6Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kLa2gtf6Eemg9YvAnhgu3w" points="[1000, 180, -643984, -643984]$[1000, 101, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kLr8QNf6Eemg9YvAnhgu3w" id="(0.4975124378109453,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kLr8Qdf6Eemg9YvAnhgu3w" id="(0.5673758865248227,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_k39MYNf6Eemg9YvAnhgu3w" type="Extension_Edge" source="_P0D70Nf6Eemg9YvAnhgu3w" target="_a63_kNf3Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="_k39MYdf6Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_k3pDUNf6Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_k39MYtf6Eemg9YvAnhgu3w" points="[980, 180, -643984, -643984]$[980, 140, -643984, -643984]$[720, 140, -643984, -643984]$[720, 101, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k4OSINf6Eemg9YvAnhgu3w" id="(0.39800995024875624,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k4OSIdf6Eemg9YvAnhgu3w" id="(0.7092198581560284,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_V925sNf8Eemg9YvAnhgu3w" type="Dependency_Edge" source="_gFktYNf4Eemg9YvAnhgu3w" target="_JdiwkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_V925s9f8Eemg9YvAnhgu3w" type="Dependency_NameLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_uoTaMNf8Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_V925tNf8Eemg9YvAnhgu3w" y="40"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_V925tdf8Eemg9YvAnhgu3w" type="Dependency_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_uobWANf8Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_V925ttf8Eemg9YvAnhgu3w" y="60"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_V925sdf8Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Dependency" href="pdp4engDesign.profile.uml#_V9zPUNf8Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V925stf8Eemg9YvAnhgu3w" points="[460, 520, -643984, -643984]$[420, 200, -643984, -643984]$[360, 200, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V-SXgNf8Eemg9YvAnhgu3w" id="(0.11049723756906077,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V-SXgdf8Eemg9YvAnhgu3w" id="(0.9917355371900827,0.4)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_sayZwNf8Eemg9YvAnhgu3w" type="Dependency_Edge" source="_NK26YNf5Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_sayZw9f8Eemg9YvAnhgu3w" type="Dependency_NameLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WZSysN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_sayZxNf8Eemg9YvAnhgu3w" y="40"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_sayZxdf8Eemg9YvAnhgu3w" type="Dependency_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WgsbMN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_sayZxtf8Eemg9YvAnhgu3w" y="60"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_sayZwdf8Eemg9YvAnhgu3w"/>

+    <element xmi:type="uml:Dependency" href="pdp4engDesign.profile.uml#_saxLoNf8Eemg9YvAnhgu3w"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sayZwtf8Eemg9YvAnhgu3w" points="[781, 460, -643984, -643984]$[761, 240, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sbNQgNf8Eemg9YvAnhgu3w" id="(0.37267080745341613,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sbNQgdf8Eemg9YvAnhgu3w" id="(0.3305785123966942,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Te_1INf9Eemg9YvAnhgu3w" type="Comment_AnnotatedElementEdge" source="_xKzMINf8Eemg9YvAnhgu3w" target="_V925sNf8Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Te_1Idf9Eemg9YvAnhgu3w"/>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Te_1Itf9Eemg9YvAnhgu3w" points="[560, 182, -643984, -643984]$[458, 200, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Tj7_gNf9Eemg9YvAnhgu3w" id="(0.8298755186721992,1.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Tj7_gdf9Eemg9YvAnhgu3w" id="(0.873015873015873,0.24568965517241378)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_w2vyQNf9Eemg9YvAnhgu3w" type="Comment_AnnotatedElementEdge" source="_YcH2cNf9Eemg9YvAnhgu3w" target="_Sib4gNf4Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="_w2vyQdf9Eemg9YvAnhgu3w"/>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w2vyQtf9Eemg9YvAnhgu3w" points="[381, 560, -643984, -643984]$[300, 460, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xAuNoNf9Eemg9YvAnhgu3w" id="(0.7117437722419929,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xAuNodf9Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="__TK_kNf9Eemg9YvAnhgu3w" type="Comment_AnnotatedElementEdge" source="_2NVccNf9Eemg9YvAnhgu3w" target="_sayZwNf8Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="__TK_kdf9Eemg9YvAnhgu3w"/>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__TK_ktf9Eemg9YvAnhgu3w" points="[1141, 340, -643984, -643984]$[740, 315, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__hPQwNf9Eemg9YvAnhgu3w" id="(0.6334841628959276,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__hP30Nf9Eemg9YvAnhgu3w" id="(0.4864864864864865,0.32653061224489793)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_B-sMMN1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_QtibsN1DEemRdeFT-FlIPQ" target="_MUTKkN1DEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_B-sMMd1EEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_B3OSQN1EEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_B-sMMt1EEemRdeFT-FlIPQ" points="[2000, 180, -643984, -643984]$[2000, 100, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CNe2IN1EEemRdeFT-FlIPQ" id="(0.4419889502762431,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CNe2Id1EEemRdeFT-FlIPQ" id="(0.4419889502762431,0.9836065573770492)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_DR45cN1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_iR0x0N1DEemRdeFT-FlIPQ" target="_bd4_4N1DEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_DR45cd1EEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_DKmlsN1EEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DR45ct1EEemRdeFT-FlIPQ" points="[1465, 180, -643984, -643984]$[1465, 40, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DgQsoN1EEemRdeFT-FlIPQ" id="(0.5,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DgQsod1EEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_adGb0N1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_My5VoN1EEemRdeFT-FlIPQ" target="_HUVbMN1EEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_adGb0d1EEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_aV19QN1EEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adGb0t1EEemRdeFT-FlIPQ" points="[1665, 180, -643984, -643984]$[1665, 100, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_arNwUN1EEemRdeFT-FlIPQ" id="(0.5,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_arNwUd1EEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_gU4ukN1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_bdMm4N1EEemRdeFT-FlIPQ" target="_U9Yq0N1EEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_gU4ukd1EEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_gNXxUN1EEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gU4ukt1EEemRdeFT-FlIPQ" points="[1825, 180, -643984, -643984]$[1825, 100, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gjDtcN1EEemRdeFT-FlIPQ" id="(0.5,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gjDtcd1EEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_CLif8N1FEemRdeFT-FlIPQ" type="Extension_Edge" source="__BGkQN1EEemRdeFT-FlIPQ" target="_7FWgYN1EEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_CLif8d1FEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_CEDX4N1FEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CLif8t1FEemRdeFT-FlIPQ" points="[1825, 180, -643984, -643984]$[1825, 100, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CZ5sEN1FEemRdeFT-FlIPQ" id="(0.42857142857142855,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CZ5sEd1FEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_GMd-wN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_QtibsN1DEemRdeFT-FlIPQ" target="__BGkQN1EEemRdeFT-FlIPQ">

+    <children xmi:type="notation:DecorationNode" xmi:id="_GMd-w91FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PYSOEN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel0N1FEemRdeFT-FlIPQ" y="60"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_GMel0d1FEemRdeFT-FlIPQ" type="Association_NameLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PfisoN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel0t1FEemRdeFT-FlIPQ" y="20"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_GMel091FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PnK-oN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel1N1FEemRdeFT-FlIPQ" x="-16" y="20"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_GMel1d1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PuPP8N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel1t1FEemRdeFT-FlIPQ" x="16" y="-20"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_GMel191FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_P1V9gN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel2N1FEemRdeFT-FlIPQ" x="16" y="20"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_GMel2d1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_P8bc8N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel2t1FEemRdeFT-FlIPQ" x="-16" y="-20"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_GMd-wd1FEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_GFLD8N1FEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GMd-wt1FEemRdeFT-FlIPQ" points="[1985, 220, -643984, -643984]$[1905, 220, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Gb0CUN1FEemRdeFT-FlIPQ" id="(0.0,0.4)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Gb0CUd1FEemRdeFT-FlIPQ" id="(1.0,0.4)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_tiaDUN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_iR0x0N1DEemRdeFT-FlIPQ" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_tiaqYN1FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vpqDsN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqYd1FEemRdeFT-FlIPQ" x="1" y="58"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_tiaqYt1FEemRdeFT-FlIPQ" type="Association_NameLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vw5UIN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqY91FEemRdeFT-FlIPQ" x="-1" y="18"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_tiaqZN1FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_v4H9gN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqZd1FEemRdeFT-FlIPQ" x="-156" y="19"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_tiaqZt1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_v_RuYN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqZ91FEemRdeFT-FlIPQ" x="27" y="-57"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_tiaqaN1FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wGdUcN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqad1FEemRdeFT-FlIPQ" x="39" y="-87"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_tiaqat1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wOcy0N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqa91FEemRdeFT-FlIPQ" x="-157" y="-18"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_tiaDUd1FEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_tbKL0N1FEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tiaDUt1FEemRdeFT-FlIPQ" points="[1400, 280, -643984, -643984]$[1400, 360, -643984, -643984]$[740, 360, -643984, -643984]$[700, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_twzrsN1FEemRdeFT-FlIPQ" id="(0.25,1.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_twzrsd1FEemRdeFT-FlIPQ" id="(0.8264462809917356,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_yduGwN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_My5VoN1EEemRdeFT-FlIPQ" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_ydut0N1FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zO7hQN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut0d1FEemRdeFT-FlIPQ" x="-1" y="58"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_ydut0t1FEemRdeFT-FlIPQ" type="Association_NameLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zWErEN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut091FEemRdeFT-FlIPQ" x="-1" y="18"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_ydut1N1FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zeEJcN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut1d1FEemRdeFT-FlIPQ" x="-123" y="-92"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_ydut1t1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zlK3AN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut191FEemRdeFT-FlIPQ" x="27" y="2"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_ydut2N1FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zsPIUN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut2d1FEemRdeFT-FlIPQ" x="47" y="-26"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_ydut2t1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zzTZoN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut291FEemRdeFT-FlIPQ" x="-121" y="-130"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_yduGwd1FEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_yWL7YN1FEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yduGwt1FEemRdeFT-FlIPQ" points="[1640, 280, -643984, -643984]$[1640, 360, -643984, -643984]$[740, 360, -643984, -643984]$[740, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ysCPkN1FEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ysCPkd1FEemRdeFT-FlIPQ" id="(0.8264462809917356,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_65D7YN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_bdMm4N1EEemRdeFT-FlIPQ" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_65D7Y91FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_72d-0N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7ZN1FEemRdeFT-FlIPQ" x="-1" y="58"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_65D7Zd1FEemRdeFT-FlIPQ" type="Association_NameLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7-JUIN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7Zt1FEemRdeFT-FlIPQ" x="-1" y="18"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_65D7Z91FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8FJ7EN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7aN1FEemRdeFT-FlIPQ" x="-230" y="18"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_65D7ad1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8MKiAN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7at1FEemRdeFT-FlIPQ" x="27" y="-23"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_65D7a91FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8TMXEN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7bN1FEemRdeFT-FlIPQ" x="47" y="-26"/>

+    </children>

+    <children xmi:type="notation:DecorationNode" xmi:id="_65D7bd1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8aM-AN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7bt1FEemRdeFT-FlIPQ" x="-230" y="-19"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_65D7Yd1FEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_6x6KgN1FEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_65D7Yt1FEemRdeFT-FlIPQ" points="[1800, 280, -643984, -643984]$[1800, 360, -643984, -643984]$[740, 360, -643984, -643984]$[720, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7H62wN1FEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7H62wd1FEemRdeFT-FlIPQ" id="(0.8264462809917356,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_eqae4N1GEemRdeFT-FlIPQ" type="Extension_Edge" source="_aLMhkN1GEemRdeFT-FlIPQ" target="_U01g4N1GEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_eqae4d1GEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_ejILIN1GEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eqae4t1GEemRdeFT-FlIPQ" points="[1440, 560, -643984, -643984]$[1440, 480, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e4jBgN1GEemRdeFT-FlIPQ" id="(0.4285714285714275,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e4jBgd1GEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_F0M90N1HEemRdeFT-FlIPQ" type="Extension_Edge" source="_93zvAN1GEemRdeFT-FlIPQ" target="_yP4poN1GEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_F0M90d1HEemRdeFT-FlIPQ"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_Fs8fQN1HEemRdeFT-FlIPQ"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F0M90t1HEemRdeFT-FlIPQ" points="[1660, 560, -643984, -643984]$[1660, 480, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCSdIN1HEemRdeFT-FlIPQ" id="(0.42857142857142855,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCSdId1HEemRdeFT-FlIPQ" id="(0.5,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_G_83oN3pEemd764Om4vVaw" type="Generalization_Edge" source="_wRCB8N3jEemd764Om4vVaw" target="_AGLYkNf4Eemg9YvAnhgu3w">

+    <children xmi:type="notation:DecorationNode" xmi:id="_G_9esN3pEemd764Om4vVaw" type="Generalization_StereotypeLabel">

+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_UQfgoN3pEemd764Om4vVaw" name="IS_UPDATED_POSITION" booleanValue="true"/>

+      <layoutConstraint xmi:type="notation:Location" xmi:id="_G_9esd3pEemd764Om4vVaw" x="-1" y="58"/>

+    </children>

+    <styles xmi:type="notation:FontStyle" xmi:id="_G_83od3pEemd764Om4vVaw"/>

+    <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_Gy_ZsN3pEemd764Om4vVaw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_G_83ot3pEemd764Om4vVaw" points="[820, 740, -643984, -643984]$[800, 480, -643984, -643984]$[720, 480, -643984, -643984]$[720, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HYmBIN3pEemd764Om4vVaw" id="(0.33195020746887965,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HYmBId3pEemd764Om4vVaw" id="(0.6611570247933884,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_N18dUN_REemY2N9mLr0t_A" type="Comment_AnnotatedElementEdge" source="_DDHz8N_REemY2N9mLr0t_A" target="_P0D70Nf6Eemg9YvAnhgu3w">

+    <styles xmi:type="notation:FontStyle" xmi:id="_N18dUd_REemY2N9mLr0t_A"/>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_N18dUt_REemY2N9mLr0t_A" points="[1306, 220, -643984, -643984]$[1101, 240, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OXXIUN_REemY2N9mLr0t_A" id="(0.21505376344086022,1.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OXXIUd_REemY2N9mLr0t_A" id="(1.0,0.594059405940594)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_bGzGcDw2Eeq4CulPkgdiyw" type="Extension_Edge" source="_My5VoN1EEemRdeFT-FlIPQ" target="_Ll_rADw2Eeq4CulPkgdiyw">

+    <styles xmi:type="notation:FontStyle" xmi:id="_bGzGcTw2Eeq4CulPkgdiyw"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_a2DUsDw2Eeq4CulPkgdiyw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGzGcjw2Eeq4CulPkgdiyw" points="[1660, 180, -643984, -643984]$[1660, 140, -643984, -643984]$[1720, 140, -643984, -643984]$[1720, -19, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_boZXoDw2Eeq4CulPkgdiyw" id="(0.6666666666666666,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_boZXoTw2Eeq4CulPkgdiyw" id="(0.49586776859504134,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_jajFUDw2Eeq4CulPkgdiyw" type="Extension_Edge" source="_bdMm4N1EEemRdeFT-FlIPQ" target="_Ll_rADw2Eeq4CulPkgdiyw">

+    <styles xmi:type="notation:FontStyle" xmi:id="_jajFUTw2Eeq4CulPkgdiyw"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_jJhmwDw2Eeq4CulPkgdiyw"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jajFUjw2Eeq4CulPkgdiyw" points="[1780, 180, -643984, -643984]$[1780, 140, -643984, -643984]$[1720, 140, -643984, -643984]$[1720, -19, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_j_08oDw2Eeq4CulPkgdiyw" id="(0.3333333333333333,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_j_08oTw2Eeq4CulPkgdiyw" id="(0.49586776859504134,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_AFeb4Dw7Eeq_nqtGu0tpGg" type="Comment_AnnotatedElementEdge" source="_tzSTYDw5EeqAXbhiSoKbXQ" target="_bdMm4N1EEemRdeFT-FlIPQ">

+    <styles xmi:type="notation:FontStyle" xmi:id="_AFeb4Tw7Eeq_nqtGu0tpGg"/>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AFeb4jw7Eeq_nqtGu0tpGg" points="[1880, 340, -643984, -643984]$[1820, 280, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AoELkDw7Eeq_nqtGu0tpGg" id="(0.29850746268656714,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AoELkTw7Eeq_nqtGu0tpGg" id="(0.6666666666666666,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_27yB0FQHEeqg5faUSU0D9Q" type="Extension_Edge" source="_93zvAN1GEemRdeFT-FlIPQ" target="_0w--MFQHEeqg5faUSU0D9Q">

+    <styles xmi:type="notation:FontStyle" xmi:id="_27yB0VQHEeqg5faUSU0D9Q"/>

+    <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_22MXMFQHEeqg5faUSU0D9Q"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_27yB0lQHEeqg5faUSU0D9Q" points="[1680, 560, -643984, -643984]$[1680, 520, -643984, -643984]$[1840, 520, -643984, -643984]$[1840, 481, -643984, -643984]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F_GsFQHEeqg5faUSU0D9Q" id="(0.5714285714285714,0.0)"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F_GsVQHEeqg5faUSU0D9Q" id="(0.425531914893617,1.0)"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Nq1Z8FSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_VhNzQNf3Eemg9YvAnhgu3w" target="_Nq0y4FSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Nq1Z8VSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nq2BAFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nq1Z8lSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nq1Z81SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nq1Z9FSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_NrBAIVSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_a63_kNf3Eemg9YvAnhgu3w" target="_NrAZEFSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_NrBAIlSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NrBAJlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NrBAI1SHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NrBAJFSHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NrBAJVSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_NreTJFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_I3ytQNf6Eemg9YvAnhgu3w" target="_NreTIFSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_NreTJVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nre6MFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NreTJlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NreTJ1SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NreTKFSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Nrux0FSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_MUTKkN1DEemRdeFT-FlIPQ" target="_NruKw1SHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Nrux0VSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nrux1VSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nrux0lSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nrux01SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nrux1FSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Nr_3kVSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_bd4_4N1DEemRdeFT-FlIPQ" target="_Nr_QgFSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Nr_3klSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nr_3llSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nr_3k1SHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nr_3lFSHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nr_3lVSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_NsPvNFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_HUVbMN1EEemRdeFT-FlIPQ" target="_NsPvMFSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_NsPvNVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NsPvOVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NsPvNlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsPvN1SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsPvOFSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Nsfm1FSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_U9Yq0N1EEemRdeFT-FlIPQ" target="_Nsfm0FSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Nsfm1VSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsfm2VSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nsfm1lSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsfm11SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsfm2FSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Nsu3ZFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_7FWgYN1EEemRdeFT-FlIPQ" target="_Nsu3YFSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Nsu3ZVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsu3aVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nsu3ZlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsu3Z1SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsu3aFSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_Ns5Pd1SHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_U01g4N1GEemRdeFT-FlIPQ" target="_Ns5Pc1SHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_Ns5PeFSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ns52glSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ns5PeVSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ns52gFSHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ns52gVSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_NtEOkFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_yP4poN1GEemRdeFT-FlIPQ" target="_NtDng1SHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_NtEOkVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtEOlVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NtEOklSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtEOk1SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtEOlFSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_NtXJhFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_Ll_rADw2Eeq4CulPkgdiyw" target="_NtXJgFSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_NtXJhVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtXJiVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NtXJhlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtXJh1SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtXJiFSHEeq7oNgDaAroEA"/>

+  </edges>

+  <edges xmi:type="notation:Connector" xmi:id="_NtivtFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_0w--MFQHEeqg5faUSU0D9Q" target="_NtivsFSHEeq7oNgDaAroEA">

+    <styles xmi:type="notation:FontStyle" xmi:id="_NtivtVSHEeq7oNgDaAroEA"/>

+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtivuVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">

+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>

+    </styles>

+    <element xsi:nil="true"/>

+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NtivtlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ntivt1SHEeq7oNgDaAroEA"/>

+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtivuFSHEeq7oNgDaAroEA"/>

+  </edges>

+</notation:Diagram>

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.uml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.uml
new file mode 100644
index 0000000..fb02312
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.uml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">

+  <uml:Profile xmi:id="_KCC2sNf2Eemg9YvAnhgu3w" name="pdp4engDesign" metaclassReference="_VhITsNf3Eemg9YvAnhgu3w _a62xcNf3Eemg9YvAnhgu3w _y2-MUNf3Eemg9YvAnhgu3w _I3xfINf6Eemg9YvAnhgu3w _h9j30Nf6Eemg9YvAnhgu3w _MTddEN1DEemRdeFT-FlIPQ _bd18kN1DEemRdeFT-FlIPQ _HUUNEN1EEemRdeFT-FlIPQ _U9YDwN1EEemRdeFT-FlIPQ _U00SwN1GEemRdeFT-FlIPQ _yP3bgN1GEemRdeFT-FlIPQ _Lk9JMDw2Eeq4CulPkgdiyw _0w8h8FQHEeqg5faUSU0D9Q">

+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DaV3ANgDEemg9YvAnhgu3w" source="http://www.eclipse.org/uml2/2.0.0/UML">

+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0w7T0FQHEeqg5faUSU0D9Q" source="PapyrusVersion">

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T0VQHEeqg5faUSU0D9Q" key="Version" value="0.0.0"/>

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T0lQHEeqg5faUSU0D9Q" key="Comment" value="&lt;undefined>"/>

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T01QHEeqg5faUSU0D9Q" key="Copyright" value=""/>

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T1FQHEeqg5faUSU0D9Q" key="Date" value=""/>

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T1VQHEeqg5faUSU0D9Q" key="Author" value="&lt;undefined>"/>

+      </eAnnotations>

+    </eAnnotations>

+    <ownedComment xmi:type="uml:Comment" xmi:id="_xKiGYNf8Eemg9YvAnhgu3w" annotatedElement="_V9zPUNf8Eemg9YvAnhgu3w">

+      <body>DataLinks are typed with a DataType. The DataType contains a library of categories for data typing.

+</body>

+    </ownedComment>

+    <ownedComment xmi:type="uml:Comment" xmi:id="_YcFaMNf9Eemg9YvAnhgu3w" annotatedElement="_SiXAANf4Eemg9YvAnhgu3w">

+      <body>OpaqueData are data which are not directly interpretable: further tokens are necessary to transform them into a readable form. This data type can be useful to model special data types like for instance ciphered data.</body>

+    </ownedComment>

+    <ownedComment xmi:type="uml:Comment" xmi:id="_2NU1YNf9Eemg9YvAnhgu3w" annotatedElement="_saxLoNf8Eemg9YvAnhgu3w">

+      <body>CompositeData play the role of data containers and thus they can contain other data.</body>

+    </ownedComment>

+    <ownedComment xmi:type="uml:Comment" xmi:id="_5Ong4N1HEemRdeFT-FlIPQ">

+      <body>Elements in gray support the implementation of data-centric models</body>

+    </ownedComment>

+    <ownedComment xmi:type="uml:Comment" xmi:id="__lh_oN1HEemRdeFT-FlIPQ">

+      <body>Elements in magenta support the implementation of process-centric models (DFDs)</body>

+    </ownedComment>

+    <ownedComment xmi:type="uml:Comment" xmi:id="_DCIVcN_REemY2N9mLr0t_A" annotatedElement="_P0ARcNf6Eemg9YvAnhgu3w">

+      <body>Likelihood interval to be 

+written as a Java constraint</body>

+    </ownedComment>

+    <ownedComment xmi:type="uml:Comment" xmi:id="_tyS04Dw5EeqAXbhiSoKbXQ" annotatedElement="_bdLYwN1EEemRdeFT-FlIPQ">

+      <body>Input and output pins can play double role:

+- As ports

+- As parameters</body>

+    </ownedComment>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_VhITsNf3Eemg9YvAnhgu3w" alias="PrimitiveType">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_a62xcNf3Eemg9YvAnhgu3w" alias="Class">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_y2-MUNf3Eemg9YvAnhgu3w" alias="Property">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_I3xfINf6Eemg9YvAnhgu3w" alias="NamedElement">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_h9j30Nf6Eemg9YvAnhgu3w" alias="Element">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_MTddEN1DEemRdeFT-FlIPQ" alias="ActivityParameterNode">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_bd18kN1DEemRdeFT-FlIPQ" alias="DataStoreNode">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_HUUNEN1EEemRdeFT-FlIPQ" alias="InputPin">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_U9YDwN1EEemRdeFT-FlIPQ" alias="OutputPin">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_U00SwN1GEemRdeFT-FlIPQ" alias="Activity">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_yP3bgN1GEemRdeFT-FlIPQ" alias="CallBehaviorAction">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_Lk9JMDw2Eeq4CulPkgdiyw" alias="Parameter">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>

+    </elementImport>

+    <elementImport xmi:type="uml:ElementImport" xmi:id="_0w8h8FQHEeqg5faUSU0D9Q" alias="OpaqueAction">

+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>

+    </elementImport>

+    <packageImport xmi:type="uml:PackageImport" xmi:id="_KIQzcNf2Eemg9YvAnhgu3w">

+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>

+    </packageImport>

+    <packageImport xmi:type="uml:PackageImport" xmi:id="_KIRagNf2Eemg9YvAnhgu3w">

+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>

+    </packageImport>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_AGAZcNf4Eemg9YvAnhgu3w" name="Data">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_DHyvcNf4Eemg9YvAnhgu3w" name="base_Class" association="_DHt28Nf4Eemg9YvAnhgu3w">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_DHt28Nf4Eemg9YvAnhgu3w" name="E_Data_Class7" memberEnd="_DHyIYNf4Eemg9YvAnhgu3w _DHyvcNf4Eemg9YvAnhgu3w">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_DHyIYNf4Eemg9YvAnhgu3w" name="extension_Data" type="_AGAZcNf4Eemg9YvAnhgu3w" aggregation="composite" association="_DHt28Nf4Eemg9YvAnhgu3w"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Jdg7YNf4Eemg9YvAnhgu3w" name="DataType">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_M0CLQdf4Eemg9YvAnhgu3w" name="base_PrimitiveType" association="_M0BkMNf4Eemg9YvAnhgu3w">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_M0BkMNf4Eemg9YvAnhgu3w" name="E_DataType_PrimitiveType9" memberEnd="_M0CLQNf4Eemg9YvAnhgu3w _M0CLQdf4Eemg9YvAnhgu3w">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_M0CLQNf4Eemg9YvAnhgu3w" name="extension_DataType" type="_Jdg7YNf4Eemg9YvAnhgu3w" aggregation="composite" association="_M0BkMNf4Eemg9YvAnhgu3w"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_SiXAANf4Eemg9YvAnhgu3w" name="OpaqueData">

+      <generalization xmi:type="uml:Generalization" xmi:id="_VAuf4Nf4Eemg9YvAnhgu3w" general="_Jdg7YNf4Eemg9YvAnhgu3w"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_gFi4MNf4Eemg9YvAnhgu3w" name="DataLink">

+      <generalization xmi:type="uml:Generalization" xmi:id="_mPWIANf4Eemg9YvAnhgu3w" general="_AGAZcNf4Eemg9YvAnhgu3w"/>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_zwn7sNf4Eemg9YvAnhgu3w" name="path">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FN98UNf5Eemg9YvAnhgu3w"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FOEC8Nf5Eemg9YvAnhgu3w" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_hV4CMNf5Eemg9YvAnhgu3w" name="type" visibility="public" type="_Jdg7YNf4Eemg9YvAnhgu3w">

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vx4_0Nf5Eemg9YvAnhgu3w"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vyCw0Nf5Eemg9YvAnhgu3w" value="1"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_NKwzwNf5Eemg9YvAnhgu3w" name="CompositeData">

+      <generalization xmi:type="uml:Generalization" xmi:id="_PyXvMNf5Eemg9YvAnhgu3w" general="_AGAZcNf4Eemg9YvAnhgu3w"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_VQu1UNf5Eemg9YvAnhgu3w" name="Table">

+      <generalization xmi:type="uml:Generalization" xmi:id="_W_YvgNf5Eemg9YvAnhgu3w" general="_AGAZcNf4Eemg9YvAnhgu3w"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_P0ARcNf6Eemg9YvAnhgu3w" name="isPersonalData">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_R4yMoNf6Eemg9YvAnhgu3w" name="likelihood" visibility="public">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c3FGMNf6Eemg9YvAnhgu3w"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c3JXoNf6Eemg9YvAnhgu3w" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_kLQecdf6Eemg9YvAnhgu3w" name="base_NamedElement" association="_kLP3YNf6Eemg9YvAnhgu3w">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_k3qRcNf6Eemg9YvAnhgu3w" name="base_Class" association="_k3pDUNf6Eemg9YvAnhgu3w">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_kLP3YNf6Eemg9YvAnhgu3w" name="E_isPersonalData_NamedElement18" memberEnd="_kLQecNf6Eemg9YvAnhgu3w _kLQecdf6Eemg9YvAnhgu3w">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_kLQecNf6Eemg9YvAnhgu3w" name="extension_isPersonalData" type="_P0ARcNf6Eemg9YvAnhgu3w" aggregation="composite" association="_kLP3YNf6Eemg9YvAnhgu3w"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_k3pDUNf6Eemg9YvAnhgu3w" name="E_isPersonalData_Class19" memberEnd="_k3pqYNf6Eemg9YvAnhgu3w _k3qRcNf6Eemg9YvAnhgu3w">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_k3pqYNf6Eemg9YvAnhgu3w" name="extension_isPersonalData" type="_P0ARcNf6Eemg9YvAnhgu3w" aggregation="composite" association="_k3pDUNf6Eemg9YvAnhgu3w"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Dependency" xmi:id="_V9zPUNf8Eemg9YvAnhgu3w" client="_gFi4MNf4Eemg9YvAnhgu3w" supplier="_Jdg7YNf4Eemg9YvAnhgu3w"/>

+    <packagedElement xmi:type="uml:Dependency" xmi:id="_saxLoNf8Eemg9YvAnhgu3w" client="_NKwzwNf5Eemg9YvAnhgu3w" supplier="_KCC2sNf2Eemg9YvAnhgu3w"/>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_QtdjMN1DEemRdeFT-FlIPQ" name="ExternalEntity">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_B3Qugd1EEemRdeFT-FlIPQ" name="base_ActivityParameterNode" association="_B3OSQN1EEemRdeFT-FlIPQ">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_GFNgMN1FEemRdeFT-FlIPQ" name="entity" type="__BFWIN1EEemRdeFT-FlIPQ" association="_GFLD8N1FEemRdeFT-FlIPQ">

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j0Jb0FTGEeq7oNgDaAroEA"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_iRy8oN1DEemRdeFT-FlIPQ" name="DataStore">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_DKnMwN1EEemRdeFT-FlIPQ" name="base_DataStoreNode" association="_DKmlsN1EEemRdeFT-FlIPQ">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_B3OSQN1EEemRdeFT-FlIPQ" name="E_ExternalEntity_ActivityParameterNode31" memberEnd="_B3QugN1EEemRdeFT-FlIPQ _B3Qugd1EEemRdeFT-FlIPQ">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_B3QugN1EEemRdeFT-FlIPQ" name="extension_ExternalEntity" type="_QtdjMN1DEemRdeFT-FlIPQ" aggregation="composite" association="_B3OSQN1EEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_DKmlsN1EEemRdeFT-FlIPQ" name="E_DataStore_DataStoreNode32" memberEnd="_DKmlsd1EEemRdeFT-FlIPQ _DKnMwN1EEemRdeFT-FlIPQ">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_DKmlsd1EEemRdeFT-FlIPQ" name="extension_DataStore" type="_iRy8oN1DEemRdeFT-FlIPQ" aggregation="composite" association="_DKmlsN1EEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_My4ukN1EEemRdeFT-FlIPQ" name="DataInput">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_aV3LYN1EEemRdeFT-FlIPQ" name="base_InputPin" association="_aV19QN1EEemRdeFT-FlIPQ">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_a2G_EDw2Eeq4CulPkgdiyw" name="base_Parameter" association="_a2DUsDw2Eeq4CulPkgdiyw">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_aV19QN1EEemRdeFT-FlIPQ" name="E_DataInput_InputPin36" memberEnd="_aV2kUN1EEemRdeFT-FlIPQ _aV3LYN1EEemRdeFT-FlIPQ">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_aV2kUN1EEemRdeFT-FlIPQ" name="extension_DataInput" type="_My4ukN1EEemRdeFT-FlIPQ" aggregation="composite" association="_aV19QN1EEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_bdLYwN1EEemRdeFT-FlIPQ" name="DataOutput">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_gNYYYd1EEemRdeFT-FlIPQ" name="base_OutputPin" association="_gNXxUN1EEemRdeFT-FlIPQ">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_jJi04Dw2Eeq4CulPkgdiyw" name="base_Parameter" association="_jJhmwDw2Eeq4CulPkgdiyw">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_gNXxUN1EEemRdeFT-FlIPQ" name="E_DataOutput_OutputPin38" memberEnd="_gNYYYN1EEemRdeFT-FlIPQ _gNYYYd1EEemRdeFT-FlIPQ">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_gNYYYN1EEemRdeFT-FlIPQ" name="extension_DataOutput" type="_bdLYwN1EEemRdeFT-FlIPQ" aggregation="composite" association="_gNXxUN1EEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="__BFWIN1EEemRdeFT-FlIPQ" name="Entity">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_CED-8d1FEemRdeFT-FlIPQ" name="base_NamedElement" association="_CEDX4N1FEemRdeFT-FlIPQ">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_CEDX4N1FEemRdeFT-FlIPQ" name="E_Entity_NamedElement40" memberEnd="_CED-8N1FEemRdeFT-FlIPQ _CED-8d1FEemRdeFT-FlIPQ">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_CED-8N1FEemRdeFT-FlIPQ" name="extension_Entity" type="__BFWIN1EEemRdeFT-FlIPQ" aggregation="composite" association="_CEDX4N1FEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Association" xmi:id="_GFLD8N1FEemRdeFT-FlIPQ" memberEnd="_GFNgMN1FEemRdeFT-FlIPQ _GFOHQN1FEemRdeFT-FlIPQ">

+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GFM5IN1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GFM5Id1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>

+      </eAnnotations>

+      <ownedEnd xmi:type="uml:Property" xmi:id="_GFOHQN1FEemRdeFT-FlIPQ" name="externalentity" type="_QtdjMN1DEemRdeFT-FlIPQ" association="_GFLD8N1FEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Association" xmi:id="_tbKL0N1FEemRdeFT-FlIPQ" memberEnd="_tbKy4t1FEemRdeFT-FlIPQ _tbLZ8N1FEemRdeFT-FlIPQ" navigableOwnedEnd="_tbKy4t1FEemRdeFT-FlIPQ">

+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tbKy4N1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tbKy4d1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>

+      </eAnnotations>

+      <ownedEnd xmi:type="uml:Property" xmi:id="_tbKy4t1FEemRdeFT-FlIPQ" name="data" type="_AGAZcNf4Eemg9YvAnhgu3w" association="_tbKL0N1FEemRdeFT-FlIPQ"/>

+      <ownedEnd xmi:type="uml:Property" xmi:id="_tbLZ8N1FEemRdeFT-FlIPQ" name="datastore" type="_iRy8oN1DEemRdeFT-FlIPQ" association="_tbKL0N1FEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Association" xmi:id="_yWL7YN1FEemRdeFT-FlIPQ" memberEnd="_yWMict1FEemRdeFT-FlIPQ _yWMic91FEemRdeFT-FlIPQ" navigableOwnedEnd="_yWMict1FEemRdeFT-FlIPQ">

+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yWMicN1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yWMicd1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>

+      </eAnnotations>

+      <ownedEnd xmi:type="uml:Property" xmi:id="_yWMict1FEemRdeFT-FlIPQ" name="data" type="_AGAZcNf4Eemg9YvAnhgu3w" association="_yWL7YN1FEemRdeFT-FlIPQ"/>

+      <ownedEnd xmi:type="uml:Property" xmi:id="_yWMic91FEemRdeFT-FlIPQ" name="datainput" type="_My4ukN1EEemRdeFT-FlIPQ" association="_yWL7YN1FEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Association" xmi:id="_6x6KgN1FEemRdeFT-FlIPQ" memberEnd="_6x7Yot1FEemRdeFT-FlIPQ _6x7_sN1FEemRdeFT-FlIPQ" navigableOwnedEnd="_6x7Yot1FEemRdeFT-FlIPQ">

+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6x7YoN1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">

+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6x7Yod1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>

+      </eAnnotations>

+      <ownedEnd xmi:type="uml:Property" xmi:id="_6x7Yot1FEemRdeFT-FlIPQ" name="data" type="_AGAZcNf4Eemg9YvAnhgu3w" association="_6x6KgN1FEemRdeFT-FlIPQ"/>

+      <ownedEnd xmi:type="uml:Property" xmi:id="_6x7_sN1FEemRdeFT-FlIPQ" name="dataoutput" type="_bdLYwN1EEemRdeFT-FlIPQ" association="_6x6KgN1FEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_aLL6gN1GEemRdeFT-FlIPQ" name="Process">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ejIyMd1GEemRdeFT-FlIPQ" name="base_Activity" association="_ejILIN1GEemRdeFT-FlIPQ">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_ejILIN1GEemRdeFT-FlIPQ" name="E_Process_Activity47" memberEnd="_ejIyMN1GEemRdeFT-FlIPQ _ejIyMd1GEemRdeFT-FlIPQ">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ejIyMN1GEemRdeFT-FlIPQ" name="extension_Process" type="_aLL6gN1GEemRdeFT-FlIPQ" aggregation="composite" association="_ejILIN1GEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_93zH8N1GEemRdeFT-FlIPQ" name="CallProcess">

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Fs9GUN1HEemRdeFT-FlIPQ" name="base_CallBehaviorAction" association="_Fs8fQN1HEemRdeFT-FlIPQ">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_22PagFQHEeqg5faUSU0D9Q" name="base_OpaqueAction" association="_22MXMFQHEeqg5faUSU0D9Q">

+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_22PagVQHEeqg5faUSU0D9Q"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_Fs8fQN1HEemRdeFT-FlIPQ" name="E_CallProcess_CallBehaviorAction1" memberEnd="_Fs8fQd1HEemRdeFT-FlIPQ _Fs9GUN1HEemRdeFT-FlIPQ">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Fs8fQd1HEemRdeFT-FlIPQ" name="extension_CallProcess" type="_93zH8N1GEemRdeFT-FlIPQ" aggregation="composite" association="_Fs8fQN1HEemRdeFT-FlIPQ"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_wQLtYN3jEemd764Om4vVaw" name="SmartGridFrame">

+      <generalization xmi:type="uml:Generalization" xmi:id="_Gy_ZsN3pEemd764Om4vVaw" general="_AGAZcNf4Eemg9YvAnhgu3w"/>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_6Qn3kN3jEemd764Om4vVaw" name="concentratorID" aggregation="composite">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IdN5IN3kEemd764Om4vVaw"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IdSxoN3kEemd764Om4vVaw" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_VKQzgN3kEemd764Om4vVaw" name="userName">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aWdyoN3kEemd764Om4vVaw"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aWirIN3kEemd764Om4vVaw" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_L1ulsN3nEemd764Om4vVaw" name="postcode">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TBkhUN3nEemd764Om4vVaw"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TBoywN3nEemd764Om4vVaw" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_qMP4MN3nEemd764Om4vVaw" name="date">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zIzjgN3nEemd764Om4vVaw"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zI3N4N3nEemd764Om4vVaw" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_-rnfYN3nEemd764Om4vVaw" name="consumption">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Dzq-UN3oEemd764Om4vVaw"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DztakN3oEemd764Om4vVaw" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_9IPLoN3oEemd764Om4vVaw" name="crc">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CGcyEN3pEemd764Om4vVaw"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CGfOUN3pEemd764Om4vVaw" value="1"/>

+      </ownedAttribute>

+      <ownedAttribute xmi:type="uml:Property" xmi:id="_S6R3oN4VEemd764Om4vVaw" name="id">

+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_drGV4N4VEemd764Om4vVaw"/>

+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_drLOYN4VEemd764Om4vVaw" value="1"/>

+      </ownedAttribute>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_a2DUsDw2Eeq4CulPkgdiyw" name="E_DataInput_Parameter56" memberEnd="_a2GYADw2Eeq4CulPkgdiyw _a2G_EDw2Eeq4CulPkgdiyw">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_a2GYADw2Eeq4CulPkgdiyw" name="extension_DataInput" type="_My4ukN1EEemRdeFT-FlIPQ" aggregation="composite" association="_a2DUsDw2Eeq4CulPkgdiyw"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_jJhmwDw2Eeq4CulPkgdiyw" name="E_DataOutput_Parameter57" memberEnd="_jJiN0Dw2Eeq4CulPkgdiyw _jJi04Dw2Eeq4CulPkgdiyw">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_jJiN0Dw2Eeq4CulPkgdiyw" name="extension_DataOutput" type="_bdLYwN1EEemRdeFT-FlIPQ" aggregation="composite" association="_jJhmwDw2Eeq4CulPkgdiyw"/>

+    </packagedElement>

+    <packagedElement xmi:type="uml:Extension" xmi:id="_22MXMFQHEeqg5faUSU0D9Q" name="E_CallProcess_OpaqueAction1" memberEnd="_22OMYFQHEeqg5faUSU0D9Q _22PagFQHEeqg5faUSU0D9Q">

+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_22OMYFQHEeqg5faUSU0D9Q" name="extension_CallProcess" type="_93zH8N1GEemRdeFT-FlIPQ" aggregation="composite" association="_22MXMFQHEeqg5faUSU0D9Q"/>

+    </packagedElement>

+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7WYMINf4Eemg9YvAnhgu3w">

+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7WZaQNf4Eemg9YvAnhgu3w" source="http://www.eclipse.org/uml2/2.0.0/UML">

+        <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>

+      </eAnnotations>

+      <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>

+    </profileApplication>

+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_fjJsUNnmEemLZrnY-MlTrA">

+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fjPL4NnmEemLZrnY-MlTrA" source="http://www.eclipse.org/uml2/2.0.0/UML">

+        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>

+      </eAnnotations>

+      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>

+    </profileApplication>

+  </uml:Profile>

+  <Ecore:EPackage xmi:id="_gryIUNnmEemLZrnY-MlTrA" base_Package="_KCC2sNf2Eemg9YvAnhgu3w" nsURI="http://org.eclipse.papyrus.pdp4eng.designer.profile" basePackage="org.eclipse.papyrus.pdp4eng.designer.profile"/>

+</xmi:XMI>

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.properties
new file mode 100644
index 0000000..08383ba
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.properties
@@ -0,0 +1,16 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#     Patrick Tessier - initial API and implementation
+#	  Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design profile
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.xml
new file mode 100644
index 0000000..d7bf4c3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated pdp4engDesign -->
+      <package
+            uri="http://org.eclipse.papyrus.pdp4eng.designer.profile"
+            class="org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage"
+            genModel="model/pdp4engDesign.genmodel"/>
+   </extension>
+  <extension
+         point="org.eclipse.emf.ecore.uri_mapping">
+      <mapping
+            source="pathmap://PDP4ENG-DESIGN/"
+            target="platform:/plugin/org.eclipse.papyrus.pdp4eng.designer.profile/model/">
+      </mapping>
+   </extension>
+   <extension
+         point="org.eclipse.uml2.uml.generated_package">
+      <profile
+            location="pathmap://PDP4ENG-DESIGN/pdp4engDesign.profile.uml#_KCC2sNf2Eemg9YvAnhgu3w"
+            uri="http://org.eclipse.papyrus.pdp4eng.designer.profile">
+      </profile>
+    </extension>
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/pom.xml
new file mode 100644
index 0000000..adc9e89
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>org.eclipse.papyrus.pdp4eng</groupId>
+		<artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	<artifactId>org.eclipse.papyrus.pdp4eng.designer.profile</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<packaging>eclipse-plugin</packaging>
+	
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/Activator.java
new file mode 100644
index 0000000..e1d1996
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/Activator.java
@@ -0,0 +1,46 @@
+/**
+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.
+ * 
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ * 
+ *  Contributors:
+ *  CEA LIST - Initial API and implementation
+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 
+ * 
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CallProcess.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CallProcess.java
new file mode 100644
index 0000000..caba632
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CallProcess.java
@@ -0,0 +1,94 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.CallBehaviorAction;

+import org.eclipse.uml2.uml.OpaqueAction;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Call Process</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_CallBehaviorAction <em>Base Call Behavior Action</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_OpaqueAction <em>Base Opaque Action</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCallProcess()

+ * @model

+ * @generated

+ */

+public interface CallProcess extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Call Behavior Action</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Call Behavior Action</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Call Behavior Action</em>' reference.

+	 * @see #setBase_CallBehaviorAction(CallBehaviorAction)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCallProcess_Base_CallBehaviorAction()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	CallBehaviorAction getBase_CallBehaviorAction();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_CallBehaviorAction <em>Base Call Behavior Action</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Call Behavior Action</em>' reference.

+	 * @see #getBase_CallBehaviorAction()

+	 * @generated

+	 */

+	void setBase_CallBehaviorAction(CallBehaviorAction value);

+

+	/**

+	 * Returns the value of the '<em><b>Base Opaque Action</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Opaque Action</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Opaque Action</em>' reference.

+	 * @see #setBase_OpaqueAction(OpaqueAction)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCallProcess_Base_OpaqueAction()

+	 * @model ordered="false"

+	 * @generated

+	 */

+	OpaqueAction getBase_OpaqueAction();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_OpaqueAction <em>Base Opaque Action</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Opaque Action</em>' reference.

+	 * @see #getBase_OpaqueAction()

+	 * @generated

+	 */

+	void setBase_OpaqueAction(OpaqueAction value);

+

+} // CallProcess

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CompositeData.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CompositeData.java
new file mode 100644
index 0000000..b3c35ba
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CompositeData.java
@@ -0,0 +1,31 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Composite Data</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCompositeData()

+ * @model

+ * @generated

+ */

+public interface CompositeData extends Data {

+} // CompositeData

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Data.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Data.java
new file mode 100644
index 0000000..89e7ec2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Data.java
@@ -0,0 +1,64 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Data</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data#getBase_Class <em>Base Class</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getData()

+ * @model

+ * @generated

+ */

+public interface Data extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Class</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Class</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Class</em>' reference.

+	 * @see #setBase_Class(org.eclipse.uml2.uml.Class)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getData_Base_Class()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	org.eclipse.uml2.uml.Class getBase_Class();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data#getBase_Class <em>Base Class</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Class</em>' reference.

+	 * @see #getBase_Class()

+	 * @generated

+	 */

+	void setBase_Class(org.eclipse.uml2.uml.Class value);

+

+} // Data

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataInput.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataInput.java
new file mode 100644
index 0000000..fceb556
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataInput.java
@@ -0,0 +1,94 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.InputPin;

+import org.eclipse.uml2.uml.Parameter;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Data Input</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_InputPin <em>Base Input Pin</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_Parameter <em>Base Parameter</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataInput()

+ * @model

+ * @generated

+ */

+public interface DataInput extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Input Pin</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Input Pin</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Input Pin</em>' reference.

+	 * @see #setBase_InputPin(InputPin)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataInput_Base_InputPin()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	InputPin getBase_InputPin();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_InputPin <em>Base Input Pin</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Input Pin</em>' reference.

+	 * @see #getBase_InputPin()

+	 * @generated

+	 */

+	void setBase_InputPin(InputPin value);

+

+	/**

+	 * Returns the value of the '<em><b>Base Parameter</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Parameter</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Parameter</em>' reference.

+	 * @see #setBase_Parameter(Parameter)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataInput_Base_Parameter()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	Parameter getBase_Parameter();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_Parameter <em>Base Parameter</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Parameter</em>' reference.

+	 * @see #getBase_Parameter()

+	 * @generated

+	 */

+	void setBase_Parameter(Parameter value);

+

+} // DataInput

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataLink.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataLink.java
new file mode 100644
index 0000000..17d543f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataLink.java
@@ -0,0 +1,90 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Data Link</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getPath <em>Path</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getType <em>Type</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataLink()

+ * @model

+ * @generated

+ */

+public interface DataLink extends Data {

+	/**

+	 * Returns the value of the '<em><b>Path</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Path</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Path</em>' attribute.

+	 * @see #setPath(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataLink_Path()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getPath();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getPath <em>Path</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Path</em>' attribute.

+	 * @see #getPath()

+	 * @generated

+	 */

+	void setPath(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' reference.

+	 * @see #setType(DataType)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataLink_Type()

+	 * @model ordered="false"

+	 * @generated

+	 */

+	DataType getType();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getType <em>Type</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Type</em>' reference.

+	 * @see #getType()

+	 * @generated

+	 */

+	void setType(DataType value);

+

+} // DataLink

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataOutput.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataOutput.java
new file mode 100644
index 0000000..4e00daa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataOutput.java
@@ -0,0 +1,100 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.OutputPin;

+import org.eclipse.uml2.uml.Parameter;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Data Output</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <!-- begin-model-doc -->

+ * Input and output pins can play double role:

+ * - As ports

+ * - As parameters

+ * <!-- end-model-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_OutputPin <em>Base Output Pin</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_Parameter <em>Base Parameter</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataOutput()

+ * @model

+ * @generated

+ */

+public interface DataOutput extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Output Pin</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Output Pin</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Output Pin</em>' reference.

+	 * @see #setBase_OutputPin(OutputPin)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataOutput_Base_OutputPin()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	OutputPin getBase_OutputPin();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_OutputPin <em>Base Output Pin</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Output Pin</em>' reference.

+	 * @see #getBase_OutputPin()

+	 * @generated

+	 */

+	void setBase_OutputPin(OutputPin value);

+

+	/**

+	 * Returns the value of the '<em><b>Base Parameter</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Parameter</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Parameter</em>' reference.

+	 * @see #setBase_Parameter(Parameter)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataOutput_Base_Parameter()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	Parameter getBase_Parameter();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_Parameter <em>Base Parameter</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Parameter</em>' reference.

+	 * @see #getBase_Parameter()

+	 * @generated

+	 */

+	void setBase_Parameter(Parameter value);

+

+} // DataOutput

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataStore.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataStore.java
new file mode 100644
index 0000000..97d87e2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataStore.java
@@ -0,0 +1,66 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.DataStoreNode;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Data Store</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore#getBase_DataStoreNode <em>Base Data Store Node</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataStore()

+ * @model

+ * @generated

+ */

+public interface DataStore extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Data Store Node</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Data Store Node</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Data Store Node</em>' reference.

+	 * @see #setBase_DataStoreNode(DataStoreNode)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataStore_Base_DataStoreNode()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	DataStoreNode getBase_DataStoreNode();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore#getBase_DataStoreNode <em>Base Data Store Node</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Data Store Node</em>' reference.

+	 * @see #getBase_DataStoreNode()

+	 * @generated

+	 */

+	void setBase_DataStoreNode(DataStoreNode value);

+

+} // DataStore

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataType.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataType.java
new file mode 100644
index 0000000..1e364ad
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataType.java
@@ -0,0 +1,66 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.PrimitiveType;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Data Type</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType#getBase_PrimitiveType <em>Base Primitive Type</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataType()

+ * @model

+ * @generated

+ */

+public interface DataType extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Primitive Type</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Primitive Type</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Primitive Type</em>' reference.

+	 * @see #setBase_PrimitiveType(PrimitiveType)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataType_Base_PrimitiveType()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	PrimitiveType getBase_PrimitiveType();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType#getBase_PrimitiveType <em>Base Primitive Type</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Primitive Type</em>' reference.

+	 * @see #getBase_PrimitiveType()

+	 * @generated

+	 */

+	void setBase_PrimitiveType(PrimitiveType value);

+

+} // DataType

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Entity.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Entity.java
new file mode 100644
index 0000000..7599a2c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Entity.java
@@ -0,0 +1,66 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.NamedElement;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Entity</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity#getBase_NamedElement <em>Base Named Element</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getEntity()

+ * @model

+ * @generated

+ */

+public interface Entity extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Named Element</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Named Element</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Named Element</em>' reference.

+	 * @see #setBase_NamedElement(NamedElement)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getEntity_Base_NamedElement()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	NamedElement getBase_NamedElement();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity#getBase_NamedElement <em>Base Named Element</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Named Element</em>' reference.

+	 * @see #getBase_NamedElement()

+	 * @generated

+	 */

+	void setBase_NamedElement(NamedElement value);

+

+} // Entity

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/ExternalEntity.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/ExternalEntity.java
new file mode 100644
index 0000000..6e20a42
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/ExternalEntity.java
@@ -0,0 +1,93 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.ActivityParameterNode;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>External Entity</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getBase_ActivityParameterNode <em>Base Activity Parameter Node</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getEntity <em>Entity</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getExternalEntity()

+ * @model

+ * @generated

+ */

+public interface ExternalEntity extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Activity Parameter Node</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Activity Parameter Node</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Activity Parameter Node</em>' reference.

+	 * @see #setBase_ActivityParameterNode(ActivityParameterNode)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getExternalEntity_Base_ActivityParameterNode()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	ActivityParameterNode getBase_ActivityParameterNode();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getBase_ActivityParameterNode <em>Base Activity Parameter Node</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Activity Parameter Node</em>' reference.

+	 * @see #getBase_ActivityParameterNode()

+	 * @generated

+	 */

+	void setBase_ActivityParameterNode(ActivityParameterNode value);

+

+	/**

+	 * Returns the value of the '<em><b>Entity</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Entity</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Entity</em>' reference.

+	 * @see #setEntity(Entity)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getExternalEntity_Entity()

+	 * @model ordered="false"

+	 * @generated

+	 */

+	Entity getEntity();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getEntity <em>Entity</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Entity</em>' reference.

+	 * @see #getEntity()

+	 * @generated

+	 */

+	void setEntity(Entity value);

+

+} // ExternalEntity

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/OpaqueData.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/OpaqueData.java
new file mode 100644
index 0000000..0ed25a2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/OpaqueData.java
@@ -0,0 +1,35 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Opaque Data</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <!-- begin-model-doc -->

+ * OpaqueData are data which are not directly interpretable: further tokens are necessary to transform them into a readable form. This data type can be useful to model special data types like for instance ciphered data.

+ * <!-- end-model-doc -->

+ *

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getOpaqueData()

+ * @model

+ * @generated

+ */

+public interface OpaqueData extends DataType {

+} // OpaqueData

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Process.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Process.java
new file mode 100644
index 0000000..5dd3a59
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Process.java
@@ -0,0 +1,66 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.Activity;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Process</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process#getBase_Activity <em>Base Activity</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getProcess()

+ * @model

+ * @generated

+ */

+public interface Process extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Base Activity</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Activity</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Activity</em>' reference.

+	 * @see #setBase_Activity(Activity)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getProcess_Base_Activity()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	Activity getBase_Activity();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process#getBase_Activity <em>Base Activity</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Activity</em>' reference.

+	 * @see #getBase_Activity()

+	 * @generated

+	 */

+	void setBase_Activity(Activity value);

+

+} // Process

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/SmartGridFrame.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/SmartGridFrame.java
new file mode 100644
index 0000000..f5f0014
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/SmartGridFrame.java
@@ -0,0 +1,225 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Smart Grid Frame</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConcentratorID <em>Concentrator ID</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getUserName <em>User Name</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getPostcode <em>Postcode</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getDate <em>Date</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConsumption <em>Consumption</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getCrc <em>Crc</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getId <em>Id</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame()

+ * @model

+ * @generated

+ */

+public interface SmartGridFrame extends Data {

+	/**

+	 * Returns the value of the '<em><b>Concentrator ID</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Concentrator ID</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Concentrator ID</em>' attribute.

+	 * @see #setConcentratorID(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_ConcentratorID()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getConcentratorID();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConcentratorID <em>Concentrator ID</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Concentrator ID</em>' attribute.

+	 * @see #getConcentratorID()

+	 * @generated

+	 */

+	void setConcentratorID(String value);

+

+	/**

+	 * Returns the value of the '<em><b>User Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>User Name</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>User Name</em>' attribute.

+	 * @see #setUserName(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_UserName()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getUserName();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getUserName <em>User Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>User Name</em>' attribute.

+	 * @see #getUserName()

+	 * @generated

+	 */

+	void setUserName(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Postcode</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Postcode</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Postcode</em>' attribute.

+	 * @see #setPostcode(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Postcode()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getPostcode();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getPostcode <em>Postcode</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Postcode</em>' attribute.

+	 * @see #getPostcode()

+	 * @generated

+	 */

+	void setPostcode(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Date</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Date</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Date</em>' attribute.

+	 * @see #setDate(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Date()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getDate();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getDate <em>Date</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Date</em>' attribute.

+	 * @see #getDate()

+	 * @generated

+	 */

+	void setDate(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Consumption</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Consumption</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Consumption</em>' attribute.

+	 * @see #setConsumption(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Consumption()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getConsumption();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConsumption <em>Consumption</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Consumption</em>' attribute.

+	 * @see #getConsumption()

+	 * @generated

+	 */

+	void setConsumption(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Crc</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Crc</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Crc</em>' attribute.

+	 * @see #setCrc(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Crc()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getCrc();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getCrc <em>Crc</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Crc</em>' attribute.

+	 * @see #getCrc()

+	 * @generated

+	 */

+	void setCrc(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Id</em>' attribute.

+	 * @see #setId(String)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Id()

+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"

+	 * @generated

+	 */

+	String getId();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getId <em>Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Id</em>' attribute.

+	 * @see #getId()

+	 * @generated

+	 */

+	void setId(String value);

+

+} // SmartGridFrame

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Table.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Table.java
new file mode 100644
index 0000000..33eb512
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Table.java
@@ -0,0 +1,31 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Table</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getTable()

+ * @model

+ * @generated

+ */

+public interface Table extends Data {

+} // Table

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CallProcessImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CallProcessImpl.java
new file mode 100644
index 0000000..9f43d9f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CallProcessImpl.java
@@ -0,0 +1,237 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.CallBehaviorAction;

+import org.eclipse.uml2.uml.OpaqueAction;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Call Process</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl#getBase_CallBehaviorAction <em>Base Call Behavior Action</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl#getBase_OpaqueAction <em>Base Opaque Action</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class CallProcessImpl extends MinimalEObjectImpl.Container implements CallProcess {

+	/**

+	 * The cached value of the '{@link #getBase_CallBehaviorAction() <em>Base Call Behavior Action</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_CallBehaviorAction()

+	 * @generated

+	 * @ordered

+	 */

+	protected CallBehaviorAction base_CallBehaviorAction;

+

+	/**

+	 * The cached value of the '{@link #getBase_OpaqueAction() <em>Base Opaque Action</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_OpaqueAction()

+	 * @generated

+	 * @ordered

+	 */

+	protected OpaqueAction base_OpaqueAction;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CallProcessImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.CALL_PROCESS;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public CallBehaviorAction getBase_CallBehaviorAction() {

+		if (base_CallBehaviorAction != null && base_CallBehaviorAction.eIsProxy()) {

+			InternalEObject oldBase_CallBehaviorAction = (InternalEObject)base_CallBehaviorAction;

+			base_CallBehaviorAction = (CallBehaviorAction)eResolveProxy(oldBase_CallBehaviorAction);

+			if (base_CallBehaviorAction != oldBase_CallBehaviorAction) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION, oldBase_CallBehaviorAction, base_CallBehaviorAction));

+			}

+		}

+		return base_CallBehaviorAction;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public CallBehaviorAction basicGetBase_CallBehaviorAction() {

+		return base_CallBehaviorAction;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_CallBehaviorAction(CallBehaviorAction newBase_CallBehaviorAction) {

+		CallBehaviorAction oldBase_CallBehaviorAction = base_CallBehaviorAction;

+		base_CallBehaviorAction = newBase_CallBehaviorAction;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION, oldBase_CallBehaviorAction, base_CallBehaviorAction));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public OpaqueAction getBase_OpaqueAction() {

+		if (base_OpaqueAction != null && base_OpaqueAction.eIsProxy()) {

+			InternalEObject oldBase_OpaqueAction = (InternalEObject)base_OpaqueAction;

+			base_OpaqueAction = (OpaqueAction)eResolveProxy(oldBase_OpaqueAction);

+			if (base_OpaqueAction != oldBase_OpaqueAction) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION, oldBase_OpaqueAction, base_OpaqueAction));

+			}

+		}

+		return base_OpaqueAction;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public OpaqueAction basicGetBase_OpaqueAction() {

+		return base_OpaqueAction;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_OpaqueAction(OpaqueAction newBase_OpaqueAction) {

+		OpaqueAction oldBase_OpaqueAction = base_OpaqueAction;

+		base_OpaqueAction = newBase_OpaqueAction;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION, oldBase_OpaqueAction, base_OpaqueAction));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:

+				if (resolve) return getBase_CallBehaviorAction();

+				return basicGetBase_CallBehaviorAction();

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:

+				if (resolve) return getBase_OpaqueAction();

+				return basicGetBase_OpaqueAction();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:

+				setBase_CallBehaviorAction((CallBehaviorAction)newValue);

+				return;

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:

+				setBase_OpaqueAction((OpaqueAction)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:

+				setBase_CallBehaviorAction((CallBehaviorAction)null);

+				return;

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:

+				setBase_OpaqueAction((OpaqueAction)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:

+				return base_CallBehaviorAction != null;

+			case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:

+				return base_OpaqueAction != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //CallProcessImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CompositeDataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CompositeDataImpl.java
new file mode 100644
index 0000000..4e9870e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CompositeDataImpl.java
@@ -0,0 +1,51 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Composite Data</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * @generated

+ */

+public class CompositeDataImpl extends DataImpl implements CompositeData {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CompositeDataImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.COMPOSITE_DATA;

+	}

+

+} //CompositeDataImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataImpl.java
new file mode 100644
index 0000000..2b6d0be
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataImpl.java
@@ -0,0 +1,172 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Data</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataImpl#getBase_Class <em>Base Class</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class DataImpl extends MinimalEObjectImpl.Container implements Data {

+	/**

+	 * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_Class()

+	 * @generated

+	 * @ordered

+	 */

+	protected org.eclipse.uml2.uml.Class base_Class;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected DataImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.DATA;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public org.eclipse.uml2.uml.Class getBase_Class() {

+		if (base_Class != null && base_Class.eIsProxy()) {

+			InternalEObject oldBase_Class = (InternalEObject)base_Class;

+			base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);

+			if (base_Class != oldBase_Class) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA__BASE_CLASS, oldBase_Class, base_Class));

+			}

+		}

+		return base_Class;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {

+		return base_Class;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {

+		org.eclipse.uml2.uml.Class oldBase_Class = base_Class;

+		base_Class = newBase_Class;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA__BASE_CLASS, oldBase_Class, base_Class));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA__BASE_CLASS:

+				if (resolve) return getBase_Class();

+				return basicGetBase_Class();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA__BASE_CLASS:

+				setBase_Class((org.eclipse.uml2.uml.Class)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA__BASE_CLASS:

+				setBase_Class((org.eclipse.uml2.uml.Class)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA__BASE_CLASS:

+				return base_Class != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //DataImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataInputImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataInputImpl.java
new file mode 100644
index 0000000..3abd1b6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataInputImpl.java
@@ -0,0 +1,237 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.InputPin;

+import org.eclipse.uml2.uml.Parameter;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Data Input</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl#getBase_InputPin <em>Base Input Pin</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl#getBase_Parameter <em>Base Parameter</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class DataInputImpl extends MinimalEObjectImpl.Container implements DataInput {

+	/**

+	 * The cached value of the '{@link #getBase_InputPin() <em>Base Input Pin</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_InputPin()

+	 * @generated

+	 * @ordered

+	 */

+	protected InputPin base_InputPin;

+

+	/**

+	 * The cached value of the '{@link #getBase_Parameter() <em>Base Parameter</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_Parameter()

+	 * @generated

+	 * @ordered

+	 */

+	protected Parameter base_Parameter;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected DataInputImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.DATA_INPUT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public InputPin getBase_InputPin() {

+		if (base_InputPin != null && base_InputPin.eIsProxy()) {

+			InternalEObject oldBase_InputPin = (InternalEObject)base_InputPin;

+			base_InputPin = (InputPin)eResolveProxy(oldBase_InputPin);

+			if (base_InputPin != oldBase_InputPin) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN, oldBase_InputPin, base_InputPin));

+			}

+		}

+		return base_InputPin;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public InputPin basicGetBase_InputPin() {

+		return base_InputPin;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_InputPin(InputPin newBase_InputPin) {

+		InputPin oldBase_InputPin = base_InputPin;

+		base_InputPin = newBase_InputPin;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN, oldBase_InputPin, base_InputPin));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Parameter getBase_Parameter() {

+		if (base_Parameter != null && base_Parameter.eIsProxy()) {

+			InternalEObject oldBase_Parameter = (InternalEObject)base_Parameter;

+			base_Parameter = (Parameter)eResolveProxy(oldBase_Parameter);

+			if (base_Parameter != oldBase_Parameter) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));

+			}

+		}

+		return base_Parameter;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Parameter basicGetBase_Parameter() {

+		return base_Parameter;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_Parameter(Parameter newBase_Parameter) {

+		Parameter oldBase_Parameter = base_Parameter;

+		base_Parameter = newBase_Parameter;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:

+				if (resolve) return getBase_InputPin();

+				return basicGetBase_InputPin();

+			case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:

+				if (resolve) return getBase_Parameter();

+				return basicGetBase_Parameter();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:

+				setBase_InputPin((InputPin)newValue);

+				return;

+			case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:

+				setBase_Parameter((Parameter)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:

+				setBase_InputPin((InputPin)null);

+				return;

+			case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:

+				setBase_Parameter((Parameter)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:

+				return base_InputPin != null;

+			case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:

+				return base_Parameter != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //DataInputImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataLinkImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataLinkImpl.java
new file mode 100644
index 0000000..c0516b8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataLinkImpl.java
@@ -0,0 +1,242 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Data Link</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl#getPath <em>Path</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl#getType <em>Type</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class DataLinkImpl extends DataImpl implements DataLink {

+	/**

+	 * The default value of the '{@link #getPath() <em>Path</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getPath()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String PATH_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getPath() <em>Path</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getPath()

+	 * @generated

+	 * @ordered

+	 */

+	protected String path = PATH_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected DataType type;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected DataLinkImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.DATA_LINK;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getPath() {

+		return path;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setPath(String newPath) {

+		String oldPath = path;

+		path = newPath;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_LINK__PATH, oldPath, path));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public DataType getType() {

+		if (type != null && type.eIsProxy()) {

+			InternalEObject oldType = (InternalEObject)type;

+			type = (DataType)eResolveProxy(oldType);

+			if (type != oldType) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_LINK__TYPE, oldType, type));

+			}

+		}

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public DataType basicGetType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setType(DataType newType) {

+		DataType oldType = type;

+		type = newType;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_LINK__TYPE, oldType, type));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_LINK__PATH:

+				return getPath();

+			case pdp4engDesignPackage.DATA_LINK__TYPE:

+				if (resolve) return getType();

+				return basicGetType();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_LINK__PATH:

+				setPath((String)newValue);

+				return;

+			case pdp4engDesignPackage.DATA_LINK__TYPE:

+				setType((DataType)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_LINK__PATH:

+				setPath(PATH_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.DATA_LINK__TYPE:

+				setType((DataType)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_LINK__PATH:

+				return PATH_EDEFAULT == null ? path != null : !PATH_EDEFAULT.equals(path);

+			case pdp4engDesignPackage.DATA_LINK__TYPE:

+				return type != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuilder result = new StringBuilder(super.toString());

+		result.append(" (path: ");

+		result.append(path);

+		result.append(')');

+		return result.toString();

+	}

+

+} //DataLinkImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataOutputImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataOutputImpl.java
new file mode 100644
index 0000000..11495ab
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataOutputImpl.java
@@ -0,0 +1,237 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.OutputPin;

+import org.eclipse.uml2.uml.Parameter;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Data Output</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl#getBase_OutputPin <em>Base Output Pin</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl#getBase_Parameter <em>Base Parameter</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class DataOutputImpl extends MinimalEObjectImpl.Container implements DataOutput {

+	/**

+	 * The cached value of the '{@link #getBase_OutputPin() <em>Base Output Pin</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_OutputPin()

+	 * @generated

+	 * @ordered

+	 */

+	protected OutputPin base_OutputPin;

+

+	/**

+	 * The cached value of the '{@link #getBase_Parameter() <em>Base Parameter</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_Parameter()

+	 * @generated

+	 * @ordered

+	 */

+	protected Parameter base_Parameter;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected DataOutputImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.DATA_OUTPUT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public OutputPin getBase_OutputPin() {

+		if (base_OutputPin != null && base_OutputPin.eIsProxy()) {

+			InternalEObject oldBase_OutputPin = (InternalEObject)base_OutputPin;

+			base_OutputPin = (OutputPin)eResolveProxy(oldBase_OutputPin);

+			if (base_OutputPin != oldBase_OutputPin) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN, oldBase_OutputPin, base_OutputPin));

+			}

+		}

+		return base_OutputPin;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public OutputPin basicGetBase_OutputPin() {

+		return base_OutputPin;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_OutputPin(OutputPin newBase_OutputPin) {

+		OutputPin oldBase_OutputPin = base_OutputPin;

+		base_OutputPin = newBase_OutputPin;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN, oldBase_OutputPin, base_OutputPin));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Parameter getBase_Parameter() {

+		if (base_Parameter != null && base_Parameter.eIsProxy()) {

+			InternalEObject oldBase_Parameter = (InternalEObject)base_Parameter;

+			base_Parameter = (Parameter)eResolveProxy(oldBase_Parameter);

+			if (base_Parameter != oldBase_Parameter) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));

+			}

+		}

+		return base_Parameter;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Parameter basicGetBase_Parameter() {

+		return base_Parameter;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_Parameter(Parameter newBase_Parameter) {

+		Parameter oldBase_Parameter = base_Parameter;

+		base_Parameter = newBase_Parameter;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:

+				if (resolve) return getBase_OutputPin();

+				return basicGetBase_OutputPin();

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:

+				if (resolve) return getBase_Parameter();

+				return basicGetBase_Parameter();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:

+				setBase_OutputPin((OutputPin)newValue);

+				return;

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:

+				setBase_Parameter((Parameter)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:

+				setBase_OutputPin((OutputPin)null);

+				return;

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:

+				setBase_Parameter((Parameter)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:

+				return base_OutputPin != null;

+			case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:

+				return base_Parameter != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //DataOutputImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataStoreImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataStoreImpl.java
new file mode 100644
index 0000000..0f1ecca
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataStoreImpl.java
@@ -0,0 +1,174 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.DataStoreNode;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Data Store</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataStoreImpl#getBase_DataStoreNode <em>Base Data Store Node</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class DataStoreImpl extends MinimalEObjectImpl.Container implements DataStore {

+	/**

+	 * The cached value of the '{@link #getBase_DataStoreNode() <em>Base Data Store Node</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_DataStoreNode()

+	 * @generated

+	 * @ordered

+	 */

+	protected DataStoreNode base_DataStoreNode;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected DataStoreImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.DATA_STORE;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public DataStoreNode getBase_DataStoreNode() {

+		if (base_DataStoreNode != null && base_DataStoreNode.eIsProxy()) {

+			InternalEObject oldBase_DataStoreNode = (InternalEObject)base_DataStoreNode;

+			base_DataStoreNode = (DataStoreNode)eResolveProxy(oldBase_DataStoreNode);

+			if (base_DataStoreNode != oldBase_DataStoreNode) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE, oldBase_DataStoreNode, base_DataStoreNode));

+			}

+		}

+		return base_DataStoreNode;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public DataStoreNode basicGetBase_DataStoreNode() {

+		return base_DataStoreNode;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_DataStoreNode(DataStoreNode newBase_DataStoreNode) {

+		DataStoreNode oldBase_DataStoreNode = base_DataStoreNode;

+		base_DataStoreNode = newBase_DataStoreNode;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE, oldBase_DataStoreNode, base_DataStoreNode));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:

+				if (resolve) return getBase_DataStoreNode();

+				return basicGetBase_DataStoreNode();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:

+				setBase_DataStoreNode((DataStoreNode)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:

+				setBase_DataStoreNode((DataStoreNode)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:

+				return base_DataStoreNode != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //DataStoreImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataTypeImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataTypeImpl.java
new file mode 100644
index 0000000..2bcd918
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataTypeImpl.java
@@ -0,0 +1,174 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.PrimitiveType;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Data Type</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataTypeImpl#getBase_PrimitiveType <em>Base Primitive Type</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class DataTypeImpl extends MinimalEObjectImpl.Container implements DataType {

+	/**

+	 * The cached value of the '{@link #getBase_PrimitiveType() <em>Base Primitive Type</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_PrimitiveType()

+	 * @generated

+	 * @ordered

+	 */

+	protected PrimitiveType base_PrimitiveType;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected DataTypeImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.DATA_TYPE;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public PrimitiveType getBase_PrimitiveType() {

+		if (base_PrimitiveType != null && base_PrimitiveType.eIsProxy()) {

+			InternalEObject oldBase_PrimitiveType = (InternalEObject)base_PrimitiveType;

+			base_PrimitiveType = (PrimitiveType)eResolveProxy(oldBase_PrimitiveType);

+			if (base_PrimitiveType != oldBase_PrimitiveType) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE, oldBase_PrimitiveType, base_PrimitiveType));

+			}

+		}

+		return base_PrimitiveType;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public PrimitiveType basicGetBase_PrimitiveType() {

+		return base_PrimitiveType;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_PrimitiveType(PrimitiveType newBase_PrimitiveType) {

+		PrimitiveType oldBase_PrimitiveType = base_PrimitiveType;

+		base_PrimitiveType = newBase_PrimitiveType;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE, oldBase_PrimitiveType, base_PrimitiveType));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:

+				if (resolve) return getBase_PrimitiveType();

+				return basicGetBase_PrimitiveType();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:

+				setBase_PrimitiveType((PrimitiveType)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:

+				setBase_PrimitiveType((PrimitiveType)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:

+				return base_PrimitiveType != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //DataTypeImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/EntityImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/EntityImpl.java
new file mode 100644
index 0000000..dcbcbfe
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/EntityImpl.java
@@ -0,0 +1,174 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.NamedElement;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Entity</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.EntityImpl#getBase_NamedElement <em>Base Named Element</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class EntityImpl extends MinimalEObjectImpl.Container implements Entity {

+	/**

+	 * The cached value of the '{@link #getBase_NamedElement() <em>Base Named Element</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_NamedElement()

+	 * @generated

+	 * @ordered

+	 */

+	protected NamedElement base_NamedElement;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected EntityImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.ENTITY;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NamedElement getBase_NamedElement() {

+		if (base_NamedElement != null && base_NamedElement.eIsProxy()) {

+			InternalEObject oldBase_NamedElement = (InternalEObject)base_NamedElement;

+			base_NamedElement = (NamedElement)eResolveProxy(oldBase_NamedElement);

+			if (base_NamedElement != oldBase_NamedElement) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));

+			}

+		}

+		return base_NamedElement;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NamedElement basicGetBase_NamedElement() {

+		return base_NamedElement;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_NamedElement(NamedElement newBase_NamedElement) {

+		NamedElement oldBase_NamedElement = base_NamedElement;

+		base_NamedElement = newBase_NamedElement;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:

+				if (resolve) return getBase_NamedElement();

+				return basicGetBase_NamedElement();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:

+				setBase_NamedElement((NamedElement)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:

+				setBase_NamedElement((NamedElement)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:

+				return base_NamedElement != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //EntityImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ExternalEntityImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ExternalEntityImpl.java
new file mode 100644
index 0000000..e87d8e3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ExternalEntityImpl.java
@@ -0,0 +1,237 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.ActivityParameterNode;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>External Entity</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl#getBase_ActivityParameterNode <em>Base Activity Parameter Node</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl#getEntity <em>Entity</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class ExternalEntityImpl extends MinimalEObjectImpl.Container implements ExternalEntity {

+	/**

+	 * The cached value of the '{@link #getBase_ActivityParameterNode() <em>Base Activity Parameter Node</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_ActivityParameterNode()

+	 * @generated

+	 * @ordered

+	 */

+	protected ActivityParameterNode base_ActivityParameterNode;

+

+	/**

+	 * The cached value of the '{@link #getEntity() <em>Entity</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getEntity()

+	 * @generated

+	 * @ordered

+	 */

+	protected Entity entity;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ExternalEntityImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.EXTERNAL_ENTITY;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ActivityParameterNode getBase_ActivityParameterNode() {

+		if (base_ActivityParameterNode != null && base_ActivityParameterNode.eIsProxy()) {

+			InternalEObject oldBase_ActivityParameterNode = (InternalEObject)base_ActivityParameterNode;

+			base_ActivityParameterNode = (ActivityParameterNode)eResolveProxy(oldBase_ActivityParameterNode);

+			if (base_ActivityParameterNode != oldBase_ActivityParameterNode) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE, oldBase_ActivityParameterNode, base_ActivityParameterNode));

+			}

+		}

+		return base_ActivityParameterNode;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ActivityParameterNode basicGetBase_ActivityParameterNode() {

+		return base_ActivityParameterNode;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_ActivityParameterNode(ActivityParameterNode newBase_ActivityParameterNode) {

+		ActivityParameterNode oldBase_ActivityParameterNode = base_ActivityParameterNode;

+		base_ActivityParameterNode = newBase_ActivityParameterNode;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE, oldBase_ActivityParameterNode, base_ActivityParameterNode));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Entity getEntity() {

+		if (entity != null && entity.eIsProxy()) {

+			InternalEObject oldEntity = (InternalEObject)entity;

+			entity = (Entity)eResolveProxy(oldEntity);

+			if (entity != oldEntity) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY, oldEntity, entity));

+			}

+		}

+		return entity;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Entity basicGetEntity() {

+		return entity;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setEntity(Entity newEntity) {

+		Entity oldEntity = entity;

+		entity = newEntity;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY, oldEntity, entity));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:

+				if (resolve) return getBase_ActivityParameterNode();

+				return basicGetBase_ActivityParameterNode();

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:

+				if (resolve) return getEntity();

+				return basicGetEntity();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:

+				setBase_ActivityParameterNode((ActivityParameterNode)newValue);

+				return;

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:

+				setEntity((Entity)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:

+				setBase_ActivityParameterNode((ActivityParameterNode)null);

+				return;

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:

+				setEntity((Entity)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:

+				return base_ActivityParameterNode != null;

+			case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:

+				return entity != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //ExternalEntityImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/OpaqueDataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/OpaqueDataImpl.java
new file mode 100644
index 0000000..de77938
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/OpaqueDataImpl.java
@@ -0,0 +1,51 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Opaque Data</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * @generated

+ */

+public class OpaqueDataImpl extends DataTypeImpl implements OpaqueData {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected OpaqueDataImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.OPAQUE_DATA;

+	}

+

+} //OpaqueDataImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ProcessImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ProcessImpl.java
new file mode 100644
index 0000000..2ed1d52
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ProcessImpl.java
@@ -0,0 +1,173 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.Activity;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Process</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ProcessImpl#getBase_Activity <em>Base Activity</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class ProcessImpl extends MinimalEObjectImpl.Container implements org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process {

+	/**

+	 * The cached value of the '{@link #getBase_Activity() <em>Base Activity</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_Activity()

+	 * @generated

+	 * @ordered

+	 */

+	protected Activity base_Activity;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ProcessImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.PROCESS;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Activity getBase_Activity() {

+		if (base_Activity != null && base_Activity.eIsProxy()) {

+			InternalEObject oldBase_Activity = (InternalEObject)base_Activity;

+			base_Activity = (Activity)eResolveProxy(oldBase_Activity);

+			if (base_Activity != oldBase_Activity) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.PROCESS__BASE_ACTIVITY, oldBase_Activity, base_Activity));

+			}

+		}

+		return base_Activity;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Activity basicGetBase_Activity() {

+		return base_Activity;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_Activity(Activity newBase_Activity) {

+		Activity oldBase_Activity = base_Activity;

+		base_Activity = newBase_Activity;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.PROCESS__BASE_ACTIVITY, oldBase_Activity, base_Activity));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:

+				if (resolve) return getBase_Activity();

+				return basicGetBase_Activity();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:

+				setBase_Activity((Activity)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:

+				setBase_Activity((Activity)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:

+				return base_Activity != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //ProcessImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/SmartGridFrameImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/SmartGridFrameImpl.java
new file mode 100644
index 0000000..d9fd960
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/SmartGridFrameImpl.java
@@ -0,0 +1,514 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Smart Grid Frame</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getConcentratorID <em>Concentrator ID</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getUserName <em>User Name</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getPostcode <em>Postcode</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getDate <em>Date</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getConsumption <em>Consumption</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getCrc <em>Crc</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getId <em>Id</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class SmartGridFrameImpl extends DataImpl implements SmartGridFrame {

+	/**

+	 * The default value of the '{@link #getConcentratorID() <em>Concentrator ID</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getConcentratorID()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String CONCENTRATOR_ID_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getConcentratorID() <em>Concentrator ID</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getConcentratorID()

+	 * @generated

+	 * @ordered

+	 */

+	protected String concentratorID = CONCENTRATOR_ID_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getUserName() <em>User Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getUserName()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String USER_NAME_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getUserName() <em>User Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getUserName()

+	 * @generated

+	 * @ordered

+	 */

+	protected String userName = USER_NAME_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getPostcode() <em>Postcode</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getPostcode()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String POSTCODE_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getPostcode() <em>Postcode</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getPostcode()

+	 * @generated

+	 * @ordered

+	 */

+	protected String postcode = POSTCODE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getDate() <em>Date</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDate()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String DATE_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getDate() <em>Date</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDate()

+	 * @generated

+	 * @ordered

+	 */

+	protected String date = DATE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getConsumption() <em>Consumption</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getConsumption()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String CONSUMPTION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getConsumption() <em>Consumption</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getConsumption()

+	 * @generated

+	 * @ordered

+	 */

+	protected String consumption = CONSUMPTION_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getCrc() <em>Crc</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getCrc()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String CRC_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getCrc() <em>Crc</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getCrc()

+	 * @generated

+	 * @ordered

+	 */

+	protected String crc = CRC_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getId()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String ID_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getId()

+	 * @generated

+	 * @ordered

+	 */

+	protected String id = ID_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SmartGridFrameImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.SMART_GRID_FRAME;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getConcentratorID() {

+		return concentratorID;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setConcentratorID(String newConcentratorID) {

+		String oldConcentratorID = concentratorID;

+		concentratorID = newConcentratorID;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID, oldConcentratorID, concentratorID));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getUserName() {

+		return userName;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setUserName(String newUserName) {

+		String oldUserName = userName;

+		userName = newUserName;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME, oldUserName, userName));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getPostcode() {

+		return postcode;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setPostcode(String newPostcode) {

+		String oldPostcode = postcode;

+		postcode = newPostcode;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE, oldPostcode, postcode));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getDate() {

+		return date;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setDate(String newDate) {

+		String oldDate = date;

+		date = newDate;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__DATE, oldDate, date));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getConsumption() {

+		return consumption;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setConsumption(String newConsumption) {

+		String oldConsumption = consumption;

+		consumption = newConsumption;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION, oldConsumption, consumption));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getCrc() {

+		return crc;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setCrc(String newCrc) {

+		String oldCrc = crc;

+		crc = newCrc;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__CRC, oldCrc, crc));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getId() {

+		return id;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setId(String newId) {

+		String oldId = id;

+		id = newId;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__ID, oldId, id));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:

+				return getConcentratorID();

+			case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:

+				return getUserName();

+			case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:

+				return getPostcode();

+			case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:

+				return getDate();

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:

+				return getConsumption();

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:

+				return getCrc();

+			case pdp4engDesignPackage.SMART_GRID_FRAME__ID:

+				return getId();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:

+				setConcentratorID((String)newValue);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:

+				setUserName((String)newValue);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:

+				setPostcode((String)newValue);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:

+				setDate((String)newValue);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:

+				setConsumption((String)newValue);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:

+				setCrc((String)newValue);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__ID:

+				setId((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:

+				setConcentratorID(CONCENTRATOR_ID_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:

+				setUserName(USER_NAME_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:

+				setPostcode(POSTCODE_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:

+				setDate(DATE_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:

+				setConsumption(CONSUMPTION_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:

+				setCrc(CRC_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.SMART_GRID_FRAME__ID:

+				setId(ID_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:

+				return CONCENTRATOR_ID_EDEFAULT == null ? concentratorID != null : !CONCENTRATOR_ID_EDEFAULT.equals(concentratorID);

+			case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:

+				return USER_NAME_EDEFAULT == null ? userName != null : !USER_NAME_EDEFAULT.equals(userName);

+			case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:

+				return POSTCODE_EDEFAULT == null ? postcode != null : !POSTCODE_EDEFAULT.equals(postcode);

+			case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:

+				return DATE_EDEFAULT == null ? date != null : !DATE_EDEFAULT.equals(date);

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:

+				return CONSUMPTION_EDEFAULT == null ? consumption != null : !CONSUMPTION_EDEFAULT.equals(consumption);

+			case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:

+				return CRC_EDEFAULT == null ? crc != null : !CRC_EDEFAULT.equals(crc);

+			case pdp4engDesignPackage.SMART_GRID_FRAME__ID:

+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuilder result = new StringBuilder(super.toString());

+		result.append(" (concentratorID: ");

+		result.append(concentratorID);

+		result.append(", userName: ");

+		result.append(userName);

+		result.append(", postcode: ");

+		result.append(postcode);

+		result.append(", date: ");

+		result.append(date);

+		result.append(", consumption: ");

+		result.append(consumption);

+		result.append(", crc: ");

+		result.append(crc);

+		result.append(", id: ");

+		result.append(id);

+		result.append(')');

+		return result.toString();

+	}

+

+} //SmartGridFrameImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/TableImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/TableImpl.java
new file mode 100644
index 0000000..4b05977
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/TableImpl.java
@@ -0,0 +1,51 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Table</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * @generated

+ */

+public class TableImpl extends DataImpl implements Table {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TableImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.TABLE;

+	}

+

+} //TableImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/isPersonalDataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/isPersonalDataImpl.java
new file mode 100644
index 0000000..c38d084
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/isPersonalDataImpl.java
@@ -0,0 +1,306 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.uml.NamedElement;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>is Personal Data</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl#getLikelihood <em>Likelihood</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl#getBase_NamedElement <em>Base Named Element</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl#getBase_Class <em>Base Class</em>}</li>

+ * </ul>

+ *

+ * @generated

+ */

+public class isPersonalDataImpl extends MinimalEObjectImpl.Container implements isPersonalData {

+	/**

+	 * The default value of the '{@link #getLikelihood() <em>Likelihood</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLikelihood()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final double LIKELIHOOD_EDEFAULT = 0.0;

+

+	/**

+	 * The cached value of the '{@link #getLikelihood() <em>Likelihood</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLikelihood()

+	 * @generated

+	 * @ordered

+	 */

+	protected double likelihood = LIKELIHOOD_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getBase_NamedElement() <em>Base Named Element</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_NamedElement()

+	 * @generated

+	 * @ordered

+	 */

+	protected NamedElement base_NamedElement;

+

+	/**

+	 * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBase_Class()

+	 * @generated

+	 * @ordered

+	 */

+	protected org.eclipse.uml2.uml.Class base_Class;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected isPersonalDataImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return pdp4engDesignPackage.Literals.IS_PERSONAL_DATA;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public double getLikelihood() {

+		return likelihood;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setLikelihood(double newLikelihood) {

+		double oldLikelihood = likelihood;

+		likelihood = newLikelihood;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD, oldLikelihood, likelihood));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NamedElement getBase_NamedElement() {

+		if (base_NamedElement != null && base_NamedElement.eIsProxy()) {

+			InternalEObject oldBase_NamedElement = (InternalEObject)base_NamedElement;

+			base_NamedElement = (NamedElement)eResolveProxy(oldBase_NamedElement);

+			if (base_NamedElement != oldBase_NamedElement) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));

+			}

+		}

+		return base_NamedElement;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NamedElement basicGetBase_NamedElement() {

+		return base_NamedElement;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_NamedElement(NamedElement newBase_NamedElement) {

+		NamedElement oldBase_NamedElement = base_NamedElement;

+		base_NamedElement = newBase_NamedElement;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public org.eclipse.uml2.uml.Class getBase_Class() {

+		if (base_Class != null && base_Class.eIsProxy()) {

+			InternalEObject oldBase_Class = (InternalEObject)base_Class;

+			base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);

+			if (base_Class != oldBase_Class) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS, oldBase_Class, base_Class));

+			}

+		}

+		return base_Class;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {

+		return base_Class;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {

+		org.eclipse.uml2.uml.Class oldBase_Class = base_Class;

+		base_Class = newBase_Class;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS, oldBase_Class, base_Class));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:

+				return getLikelihood();

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:

+				if (resolve) return getBase_NamedElement();

+				return basicGetBase_NamedElement();

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:

+				if (resolve) return getBase_Class();

+				return basicGetBase_Class();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:

+				setLikelihood((Double)newValue);

+				return;

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:

+				setBase_NamedElement((NamedElement)newValue);

+				return;

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:

+				setBase_Class((org.eclipse.uml2.uml.Class)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:

+				setLikelihood(LIKELIHOOD_EDEFAULT);

+				return;

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:

+				setBase_NamedElement((NamedElement)null);

+				return;

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:

+				setBase_Class((org.eclipse.uml2.uml.Class)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:

+				return likelihood != LIKELIHOOD_EDEFAULT;

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:

+				return base_NamedElement != null;

+			case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:

+				return base_Class != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuilder result = new StringBuilder(super.toString());

+		result.append(" (likelihood: ");

+		result.append(likelihood);

+		result.append(')');

+		return result.toString();

+	}

+

+} //isPersonalDataImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignFactoryImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignFactoryImpl.java
new file mode 100644
index 0000000..8b2f1e6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignFactoryImpl.java
@@ -0,0 +1,294 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EPackage;

+

+import org.eclipse.emf.ecore.impl.EFactoryImpl;

+

+import org.eclipse.emf.ecore.plugin.EcorePlugin;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignFactory;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model <b>Factory</b>.

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class pdp4engDesignFactoryImpl extends EFactoryImpl implements pdp4engDesignFactory {

+	/**

+	 * Creates the default factory implementation.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static pdp4engDesignFactory init() {

+		try {

+			pdp4engDesignFactory thepdp4engDesignFactory = (pdp4engDesignFactory)EPackage.Registry.INSTANCE.getEFactory(pdp4engDesignPackage.eNS_URI);

+			if (thepdp4engDesignFactory != null) {

+				return thepdp4engDesignFactory;

+			}

+		}

+		catch (Exception exception) {

+			EcorePlugin.INSTANCE.log(exception);

+		}

+		return new pdp4engDesignFactoryImpl();

+	}

+

+	/**

+	 * Creates an instance of the factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public pdp4engDesignFactoryImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EObject create(EClass eClass) {

+		switch (eClass.getClassifierID()) {

+			case pdp4engDesignPackage.OPAQUE_DATA: return createOpaqueData();

+			case pdp4engDesignPackage.DATA_TYPE: return createDataType();

+			case pdp4engDesignPackage.IS_PERSONAL_DATA: return createisPersonalData();

+			case pdp4engDesignPackage.DATA_OUTPUT: return createDataOutput();

+			case pdp4engDesignPackage.DATA: return createData();

+			case pdp4engDesignPackage.DATA_LINK: return createDataLink();

+			case pdp4engDesignPackage.COMPOSITE_DATA: return createCompositeData();

+			case pdp4engDesignPackage.TABLE: return createTable();

+			case pdp4engDesignPackage.EXTERNAL_ENTITY: return createExternalEntity();

+			case pdp4engDesignPackage.ENTITY: return createEntity();

+			case pdp4engDesignPackage.DATA_STORE: return createDataStore();

+			case pdp4engDesignPackage.DATA_INPUT: return createDataInput();

+			case pdp4engDesignPackage.PROCESS: return createProcess();

+			case pdp4engDesignPackage.CALL_PROCESS: return createCallProcess();

+			case pdp4engDesignPackage.SMART_GRID_FRAME: return createSmartGridFrame();

+			default:

+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public OpaqueData createOpaqueData() {

+		OpaqueDataImpl opaqueData = new OpaqueDataImpl();

+		return opaqueData;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public DataType createDataType() {

+		DataTypeImpl dataType = new DataTypeImpl();

+		return dataType;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public isPersonalData createisPersonalData() {

+		isPersonalDataImpl isPersonalData = new isPersonalDataImpl();

+		return isPersonalData;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public DataOutput createDataOutput() {

+		DataOutputImpl dataOutput = new DataOutputImpl();

+		return dataOutput;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Data createData() {

+		DataImpl data = new DataImpl();

+		return data;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public DataLink createDataLink() {

+		DataLinkImpl dataLink = new DataLinkImpl();

+		return dataLink;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public CompositeData createCompositeData() {

+		CompositeDataImpl compositeData = new CompositeDataImpl();

+		return compositeData;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Table createTable() {

+		TableImpl table = new TableImpl();

+		return table;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ExternalEntity createExternalEntity() {

+		ExternalEntityImpl externalEntity = new ExternalEntityImpl();

+		return externalEntity;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Entity createEntity() {

+		EntityImpl entity = new EntityImpl();

+		return entity;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public DataStore createDataStore() {

+		DataStoreImpl dataStore = new DataStoreImpl();

+		return dataStore;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public DataInput createDataInput() {

+		DataInputImpl dataInput = new DataInputImpl();

+		return dataInput;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process createProcess() {

+		ProcessImpl process = new ProcessImpl();

+		return process;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public CallProcess createCallProcess() {

+		CallProcessImpl callProcess = new CallProcessImpl();

+		return callProcess;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public SmartGridFrame createSmartGridFrame() {

+		SmartGridFrameImpl smartGridFrame = new SmartGridFrameImpl();

+		return smartGridFrame;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public pdp4engDesignPackage getpdp4engDesignPackage() {

+		return (pdp4engDesignPackage)getEPackage();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @deprecated

+	 * @generated

+	 */

+	@Deprecated

+	public static pdp4engDesignPackage getPackage() {

+		return pdp4engDesignPackage.eINSTANCE;

+	}

+

+} //pdp4engDesignFactoryImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignPackageImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignPackageImpl.java
new file mode 100644
index 0000000..3489d04
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignPackageImpl.java
@@ -0,0 +1,809 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;

+

+import org.eclipse.emf.ecore.EAttribute;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EPackage;

+import org.eclipse.emf.ecore.EReference;

+import org.eclipse.emf.ecore.EcorePackage;

+

+import org.eclipse.emf.ecore.impl.EPackageImpl;

+

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignFactory;

+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;

+

+import org.eclipse.uml2.types.TypesPackage;

+

+import org.eclipse.uml2.uml.UMLPackage;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model <b>Package</b>.

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class pdp4engDesignPackageImpl extends EPackageImpl implements pdp4engDesignPackage {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass opaqueDataEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass dataTypeEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass isPersonalDataEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass dataOutputEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass dataEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass dataLinkEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass compositeDataEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass tableEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass externalEntityEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass entityEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass dataStoreEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass dataInputEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass processEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass callProcessEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass smartGridFrameEClass = null;

+

+	/**

+	 * Creates an instance of the model <b>Package</b>, registered with

+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package

+	 * package URI value.

+	 * <p>Note: the correct way to create the package is via the static

+	 * factory method {@link #init init()}, which also performs

+	 * initialization of the package, or returns the registered package,

+	 * if one already exists.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see org.eclipse.emf.ecore.EPackage.Registry

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#eNS_URI

+	 * @see #init()

+	 * @generated

+	 */

+	private pdp4engDesignPackageImpl() {

+		super(eNS_URI, pdp4engDesignFactory.eINSTANCE);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static boolean isInited = false;

+

+	/**

+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.

+	 *

+	 * <p>This method is used to initialize {@link pdp4engDesignPackage#eINSTANCE} when that field is accessed.

+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #eNS_URI

+	 * @see #createPackageContents()

+	 * @see #initializePackageContents()

+	 * @generated

+	 */

+	public static pdp4engDesignPackage init() {

+		if (isInited) return (pdp4engDesignPackage)EPackage.Registry.INSTANCE.getEPackage(pdp4engDesignPackage.eNS_URI);

+

+		// Obtain or create and register package

+		Object registeredpdp4engDesignPackage = EPackage.Registry.INSTANCE.get(eNS_URI);

+		pdp4engDesignPackageImpl thepdp4engDesignPackage = registeredpdp4engDesignPackage instanceof pdp4engDesignPackageImpl ? (pdp4engDesignPackageImpl)registeredpdp4engDesignPackage : new pdp4engDesignPackageImpl();

+

+		isInited = true;

+

+		// Initialize simple dependencies

+		EcorePackage.eINSTANCE.eClass();

+		TypesPackage.eINSTANCE.eClass();

+		UMLPackage.eINSTANCE.eClass();

+

+		// Create package meta-data objects

+		thepdp4engDesignPackage.createPackageContents();

+

+		// Initialize created meta-data

+		thepdp4engDesignPackage.initializePackageContents();

+

+		// Mark meta-data to indicate it can't be changed

+		thepdp4engDesignPackage.freeze();

+

+		// Update the registry and return the package

+		EPackage.Registry.INSTANCE.put(pdp4engDesignPackage.eNS_URI, thepdp4engDesignPackage);

+		return thepdp4engDesignPackage;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getOpaqueData() {

+		return opaqueDataEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getDataType() {

+		return dataTypeEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getDataType_Base_PrimitiveType() {

+		return (EReference)dataTypeEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getisPersonalData() {

+		return isPersonalDataEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getisPersonalData_Likelihood() {

+		return (EAttribute)isPersonalDataEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getisPersonalData_Base_NamedElement() {

+		return (EReference)isPersonalDataEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getisPersonalData_Base_Class() {

+		return (EReference)isPersonalDataEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getDataOutput() {

+		return dataOutputEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getDataOutput_Base_OutputPin() {

+		return (EReference)dataOutputEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getDataOutput_Base_Parameter() {

+		return (EReference)dataOutputEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getData() {

+		return dataEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getData_Base_Class() {

+		return (EReference)dataEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getDataLink() {

+		return dataLinkEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getDataLink_Path() {

+		return (EAttribute)dataLinkEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getDataLink_Type() {

+		return (EReference)dataLinkEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getCompositeData() {

+		return compositeDataEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getTable() {

+		return tableEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getExternalEntity() {

+		return externalEntityEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getExternalEntity_Base_ActivityParameterNode() {

+		return (EReference)externalEntityEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getExternalEntity_Entity() {

+		return (EReference)externalEntityEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getEntity() {

+		return entityEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getEntity_Base_NamedElement() {

+		return (EReference)entityEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getDataStore() {

+		return dataStoreEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getDataStore_Base_DataStoreNode() {

+		return (EReference)dataStoreEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getDataInput() {

+		return dataInputEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getDataInput_Base_InputPin() {

+		return (EReference)dataInputEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getDataInput_Base_Parameter() {

+		return (EReference)dataInputEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getProcess() {

+		return processEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getProcess_Base_Activity() {

+		return (EReference)processEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getCallProcess() {

+		return callProcessEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getCallProcess_Base_CallBehaviorAction() {

+		return (EReference)callProcessEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EReference getCallProcess_Base_OpaqueAction() {

+		return (EReference)callProcessEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EClass getSmartGridFrame() {

+		return smartGridFrameEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getSmartGridFrame_ConcentratorID() {

+		return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getSmartGridFrame_UserName() {

+		return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getSmartGridFrame_Postcode() {

+		return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getSmartGridFrame_Date() {

+		return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getSmartGridFrame_Consumption() {

+		return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getSmartGridFrame_Crc() {

+		return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EAttribute getSmartGridFrame_Id() {

+		return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(6);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public pdp4engDesignFactory getpdp4engDesignFactory() {

+		return (pdp4engDesignFactory)getEFactoryInstance();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private boolean isCreated = false;

+

+	/**

+	 * Creates the meta-model objects for the package.  This method is

+	 * guarded to have no affect on any invocation but its first.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void createPackageContents() {

+		if (isCreated) return;

+		isCreated = true;

+

+		// Create classes and their features

+		opaqueDataEClass = createEClass(OPAQUE_DATA);

+

+		dataTypeEClass = createEClass(DATA_TYPE);

+		createEReference(dataTypeEClass, DATA_TYPE__BASE_PRIMITIVE_TYPE);

+

+		isPersonalDataEClass = createEClass(IS_PERSONAL_DATA);

+		createEAttribute(isPersonalDataEClass, IS_PERSONAL_DATA__LIKELIHOOD);

+		createEReference(isPersonalDataEClass, IS_PERSONAL_DATA__BASE_NAMED_ELEMENT);

+		createEReference(isPersonalDataEClass, IS_PERSONAL_DATA__BASE_CLASS);

+

+		dataOutputEClass = createEClass(DATA_OUTPUT);

+		createEReference(dataOutputEClass, DATA_OUTPUT__BASE_OUTPUT_PIN);

+		createEReference(dataOutputEClass, DATA_OUTPUT__BASE_PARAMETER);

+

+		dataEClass = createEClass(DATA);

+		createEReference(dataEClass, DATA__BASE_CLASS);

+

+		dataLinkEClass = createEClass(DATA_LINK);

+		createEAttribute(dataLinkEClass, DATA_LINK__PATH);

+		createEReference(dataLinkEClass, DATA_LINK__TYPE);

+

+		compositeDataEClass = createEClass(COMPOSITE_DATA);

+

+		tableEClass = createEClass(TABLE);

+

+		externalEntityEClass = createEClass(EXTERNAL_ENTITY);

+		createEReference(externalEntityEClass, EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE);

+		createEReference(externalEntityEClass, EXTERNAL_ENTITY__ENTITY);

+

+		entityEClass = createEClass(ENTITY);

+		createEReference(entityEClass, ENTITY__BASE_NAMED_ELEMENT);

+

+		dataStoreEClass = createEClass(DATA_STORE);

+		createEReference(dataStoreEClass, DATA_STORE__BASE_DATA_STORE_NODE);

+

+		dataInputEClass = createEClass(DATA_INPUT);

+		createEReference(dataInputEClass, DATA_INPUT__BASE_INPUT_PIN);

+		createEReference(dataInputEClass, DATA_INPUT__BASE_PARAMETER);

+

+		processEClass = createEClass(PROCESS);

+		createEReference(processEClass, PROCESS__BASE_ACTIVITY);

+

+		callProcessEClass = createEClass(CALL_PROCESS);

+		createEReference(callProcessEClass, CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION);

+		createEReference(callProcessEClass, CALL_PROCESS__BASE_OPAQUE_ACTION);

+

+		smartGridFrameEClass = createEClass(SMART_GRID_FRAME);

+		createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__CONCENTRATOR_ID);

+		createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__USER_NAME);

+		createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__POSTCODE);

+		createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__DATE);

+		createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__CONSUMPTION);

+		createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__CRC);

+		createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__ID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private boolean isInitialized = false;

+

+	/**

+	 * Complete the initialization of the package and its meta-model.  This

+	 * method is guarded to have no affect on any invocation but its first.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void initializePackageContents() {

+		if (isInitialized) return;

+		isInitialized = true;

+

+		// Initialize package

+		setName(eNAME);

+		setNsPrefix(eNS_PREFIX);

+		setNsURI(eNS_URI);

+

+		// Obtain other dependent packages

+		UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);

+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);

+

+		// Create type parameters

+

+		// Set bounds for type parameters

+

+		// Add supertypes to classes

+		opaqueDataEClass.getESuperTypes().add(this.getDataType());

+		dataLinkEClass.getESuperTypes().add(this.getData());

+		compositeDataEClass.getESuperTypes().add(this.getData());

+		tableEClass.getESuperTypes().add(this.getData());

+		smartGridFrameEClass.getESuperTypes().add(this.getData());

+

+		// Initialize classes, features, and operations; add parameters

+		initEClass(opaqueDataEClass, OpaqueData.class, "OpaqueData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(dataTypeEClass, DataType.class, "DataType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getDataType_Base_PrimitiveType(), theUMLPackage.getPrimitiveType(), null, "base_PrimitiveType", null, 1, 1, DataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(isPersonalDataEClass, isPersonalData.class, "isPersonalData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getisPersonalData_Likelihood(), theTypesPackage.getReal(), "likelihood", null, 0, 1, isPersonalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEReference(getisPersonalData_Base_NamedElement(), theUMLPackage.getNamedElement(), null, "base_NamedElement", null, 1, 1, isPersonalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEReference(getisPersonalData_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, isPersonalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(dataOutputEClass, DataOutput.class, "DataOutput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getDataOutput_Base_OutputPin(), theUMLPackage.getOutputPin(), null, "base_OutputPin", null, 1, 1, DataOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEReference(getDataOutput_Base_Parameter(), theUMLPackage.getParameter(), null, "base_Parameter", null, 1, 1, DataOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(dataEClass, Data.class, "Data", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getData_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, Data.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(dataLinkEClass, DataLink.class, "DataLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getDataLink_Path(), theTypesPackage.getString(), "path", null, 0, 1, DataLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEReference(getDataLink_Type(), this.getDataType(), null, "type", null, 0, 1, DataLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(compositeDataEClass, CompositeData.class, "CompositeData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(tableEClass, Table.class, "Table", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(externalEntityEClass, ExternalEntity.class, "ExternalEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getExternalEntity_Base_ActivityParameterNode(), theUMLPackage.getActivityParameterNode(), null, "base_ActivityParameterNode", null, 1, 1, ExternalEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEReference(getExternalEntity_Entity(), this.getEntity(), null, "entity", null, 0, 1, ExternalEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(entityEClass, Entity.class, "Entity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getEntity_Base_NamedElement(), theUMLPackage.getNamedElement(), null, "base_NamedElement", null, 1, 1, Entity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(dataStoreEClass, DataStore.class, "DataStore", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getDataStore_Base_DataStoreNode(), theUMLPackage.getDataStoreNode(), null, "base_DataStoreNode", null, 1, 1, DataStore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(dataInputEClass, DataInput.class, "DataInput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getDataInput_Base_InputPin(), theUMLPackage.getInputPin(), null, "base_InputPin", null, 1, 1, DataInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEReference(getDataInput_Base_Parameter(), theUMLPackage.getParameter(), null, "base_Parameter", null, 1, 1, DataInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(processEClass, org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process.class, "Process", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getProcess_Base_Activity(), theUMLPackage.getActivity(), null, "base_Activity", null, 1, 1, org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(callProcessEClass, CallProcess.class, "CallProcess", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getCallProcess_Base_CallBehaviorAction(), theUMLPackage.getCallBehaviorAction(), null, "base_CallBehaviorAction", null, 1, 1, CallProcess.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEReference(getCallProcess_Base_OpaqueAction(), theUMLPackage.getOpaqueAction(), null, "base_OpaqueAction", null, 0, 1, CallProcess.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		initEClass(smartGridFrameEClass, SmartGridFrame.class, "SmartGridFrame", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getSmartGridFrame_ConcentratorID(), theTypesPackage.getString(), "concentratorID", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEAttribute(getSmartGridFrame_UserName(), theTypesPackage.getString(), "userName", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEAttribute(getSmartGridFrame_Postcode(), theTypesPackage.getString(), "postcode", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEAttribute(getSmartGridFrame_Date(), theTypesPackage.getString(), "date", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEAttribute(getSmartGridFrame_Consumption(), theTypesPackage.getString(), "consumption", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEAttribute(getSmartGridFrame_Crc(), theTypesPackage.getString(), "crc", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+		initEAttribute(getSmartGridFrame_Id(), theTypesPackage.getString(), "id", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

+

+		// Create resource

+		createResource(eNS_URI);

+	}

+

+} //pdp4engDesignPackageImpl

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/isPersonalData.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/isPersonalData.java
new file mode 100644
index 0000000..9005dfe
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/isPersonalData.java
@@ -0,0 +1,125 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.uml2.uml.NamedElement;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>is Personal Data</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <!-- begin-model-doc -->

+ * Likelihood interval to be 

+ * written as a Java constraint

+ * <!-- end-model-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * </p>

+ * <ul>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getLikelihood <em>Likelihood</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_NamedElement <em>Base Named Element</em>}</li>

+ *   <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_Class <em>Base Class</em>}</li>

+ * </ul>

+ *

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData()

+ * @model

+ * @generated

+ */

+public interface isPersonalData extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Likelihood</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Likelihood</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Likelihood</em>' attribute.

+	 * @see #setLikelihood(double)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData_Likelihood()

+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"

+	 * @generated

+	 */

+	double getLikelihood();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getLikelihood <em>Likelihood</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Likelihood</em>' attribute.

+	 * @see #getLikelihood()

+	 * @generated

+	 */

+	void setLikelihood(double value);

+

+	/**

+	 * Returns the value of the '<em><b>Base Named Element</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Named Element</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Named Element</em>' reference.

+	 * @see #setBase_NamedElement(NamedElement)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData_Base_NamedElement()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	NamedElement getBase_NamedElement();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_NamedElement <em>Base Named Element</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Named Element</em>' reference.

+	 * @see #getBase_NamedElement()

+	 * @generated

+	 */

+	void setBase_NamedElement(NamedElement value);

+

+	/**

+	 * Returns the value of the '<em><b>Base Class</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Base Class</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Base Class</em>' reference.

+	 * @see #setBase_Class(org.eclipse.uml2.uml.Class)

+	 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData_Base_Class()

+	 * @model required="true" ordered="false"

+	 * @generated

+	 */

+	org.eclipse.uml2.uml.Class getBase_Class();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_Class <em>Base Class</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Base Class</em>' reference.

+	 * @see #getBase_Class()

+	 * @generated

+	 */

+	void setBase_Class(org.eclipse.uml2.uml.Class value);

+

+} // isPersonalData

diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignFactory.java
new file mode 100644
index 0000000..9e5ba3b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignFactory.java
@@ -0,0 +1,182 @@
+/**

+ *  Copyright (c)2020 CEA LIST, Committer Name, and others.

+ * 

+ *  All rights reserved. This program and the accompanying materials

+ *  are made available under the terms of the Eclipse Public License 2.0

+ *  which accompanies this distribution, and is available at

+ *  https://www.eclipse.org/legal/epl-2.0/

+ * 

+ *  SPDX-License-Identifier: EPL-2.0

+ * 

+ *  Contributors:

+ *  CEA LIST - Initial API and implementation

+ *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr

+ *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 

+ * 

+ */

+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;

+

+import org.eclipse.emf.ecore.EFactory;

+

+/**

+ * <!-- begin-user-doc -->

+ * The <b>Factory</b> for the model.

+ * It provides a create method for each non-abstract class of the model.

+ * <!-- end-user-doc -->

+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage

+ * @generated

+ */

+public interface pdp4engDesignFactory extends EFactory {

+	/**

+	 * The singleton instance of the factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	pdp4engDesignFactory eINSTANCE = org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignFactoryImpl.init();

+

+	/**

+	 * Returns a new object of class '<em>Opaque Data</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Opaque Data</em>'.

+	 * @generated

+	 */

+	OpaqueData createOpaqueData();

+

+	/**

+	 * Returns a new object of class '<em>Data Type</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Data Type</em>'.

+	 * @generated

+	 */

+	DataType createDataType();

+

+	/**

+	 * Returns a new object of class '<em>is Personal Data</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>is Personal Data</em>'.

+	 * @generated

+	 */

+	isPersonalData createisPersonalData();

+

+	/**

+	 * Returns a new object of class '<em>Data Output</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Data Output</em>'.

+	 * @generated

+	 */

+	DataOutput createDataOutput();

+

+	/**

+	 * Returns a new object of class '<em>Data</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Data</em>'.

+	 * @generated

+	 */

+	Data createData();

+

+	/**

+	 * Returns a new object of class '<em>Data Link</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->