From 7d9335137c7ea41aca29f44916a58c8881c929ae Mon Sep 17 00:00:00 2001
From: imcovangent <I.vanGent@tudelft.nl>
Date: Mon, 30 Jul 2018 15:48:58 +0200
Subject: [PATCH] Updated all version indications to 0.9(.0). Added new
 settings for convergers. Added saving and loading of new converger settings.

Former-commit-id: ef614ffd7d6b4832a8431246199ffd0d57d1c69b
---
 examples/scripts/ssbj_mda.py         |    2 +-
 kadmos/__init__.py                   |    2 +-
 kadmos/cmdows/cmdows.py              |    2 +-
 kadmos/cmdows/schemas/0.9/cmdows.xml |  941 ++++++++++++++++++
 kadmos/cmdows/schemas/0.9/cmdows.xsd | 1307 ++++++++++++++++++++++++++
 kadmos/graph/graph_data.py           |   72 +-
 kadmos/graph/graph_kadmos.py         |    2 +-
 7 files changed, 2292 insertions(+), 36 deletions(-)
 create mode 100644 kadmos/cmdows/schemas/0.9/cmdows.xml
 create mode 100644 kadmos/cmdows/schemas/0.9/cmdows.xsd

diff --git a/examples/scripts/ssbj_mda.py b/examples/scripts/ssbj_mda.py
index a418973a6..aa9613c52 100644
--- a/examples/scripts/ssbj_mda.py
+++ b/examples/scripts/ssbj_mda.py
@@ -127,7 +127,7 @@ fpg.graph['description'] = 'Fundamental problem graph to solve the super-sonic b
 
 # Define settings of the problem formulation
 fpg.add_problem_formulation(mdao_definition_fpg, function_order)
-fpg.graph['problem_formulation']['coupled_functions_groups'] = [['Structures'], ['Aerodynamics'], ['Propulsion']]
+#fpg.graph['problem_formulation']['coupled_functions_groups'] = [['Structures'], ['Aerodynamics'], ['Propulsion']]
 
 # Assign objective
 fpg.mark_as_qois([nd for nd in rcg.find_all_nodes(category='variable') if nd.endswith('objectives/R')])
diff --git a/kadmos/__init__.py b/kadmos/__init__.py
index deded3247..3e2f46a3a 100644
--- a/kadmos/__init__.py
+++ b/kadmos/__init__.py
@@ -1 +1 @@
-__version__ = "0.8.2"
+__version__ = "0.9.0"
diff --git a/kadmos/cmdows/cmdows.py b/kadmos/cmdows/cmdows.py
index f23ad7d34..72620b1df 100644
--- a/kadmos/cmdows/cmdows.py
+++ b/kadmos/cmdows/cmdows.py
@@ -45,7 +45,7 @@ class CMDOWS(object):
         if file_path and element is None:
             self.root = ElementTree(file=file_path, parser=parser).getroot()
         if not file_path and element is None:
-            cmdows_version = '0.8'  # TODO: pick up version number based on folder names in schemas folder (?)
+            cmdows_version = '0.9'  # TODO: pick up version number based on folder names in schemas folder (?)
             xmlns = '{}{}{}'.format(self.XMLNS_PREFIX, cmdows_version, self.XMLNS_SUFFIX)
             self.root = Element('cmdows', attrib={"{" + self.XSI + "}noNamespaceSchemaLocation": xmlns},
                                 nsmap={'xsi': self.XSI})
diff --git a/kadmos/cmdows/schemas/0.9/cmdows.xml b/kadmos/cmdows/schemas/0.9/cmdows.xml
new file mode 100644
index 000000000..7a0a30194
--- /dev/null
+++ b/kadmos/cmdows/schemas/0.9/cmdows.xml
@@ -0,0 +1,941 @@
+<cmdows>
+  <header>
+    <creator>string</creator>
+    <description>string</description>
+    <timestamp>2008-09-29T03:49:45</timestamp>
+    <fileVersion>string</fileVersion>
+    <cmdowsVersion>string</cmdowsVersion>
+    <!--Optional:-->
+    <updates>
+      <!--1 or more repetitions:-->
+      <update>
+        <modification>string</modification>
+        <creator>string</creator>
+        <timestamp>2014-09-19T01:18:33</timestamp>
+        <fileVersion>string</fileVersion>
+        <cmdowsVersion>string</cmdowsVersion>
+      </update>
+    </updates>
+    <!--Optional:-->
+    <organization>
+      <contacts>
+        <!--1 or more repetitions:-->
+        <contact uID="string">
+          <name>string</name>
+          <!--Optional:-->
+          <email>string</email>
+          <!--Optional:-->
+          <company>anyType</company>
+          <!--Optional:-->
+          <department>anyType</department>
+          <!--Optional:-->
+          <function>string</function>
+          <!--Optional:-->
+          <address>string</address>
+          <!--Optional:-->
+          <telephone>string</telephone>
+          <!--Optional:-->
+          <country>string</country>
+        </contact>
+      </contacts>
+      <!--Optional:-->
+      <organigram>
+        <!--Optional:-->
+        <architects>
+          <!--1 or more repetitions:-->
+          <architect>
+            <contactUID>anyType</contactUID>
+          </architect>
+        </architects>
+        <!--Optional:-->
+        <integrators>
+          <!--1 or more repetitions:-->
+          <integrator>
+            <contactUID>anyType</contactUID>
+          </integrator>
+        </integrators>
+        <!--Optional:-->
+        <collaborativeEngineers>
+          <!--1 or more repetitions:-->
+          <collaborativeEngineer>
+            <contactUID>anyType</contactUID>
+          </collaborativeEngineer>
+        </collaborativeEngineers>
+        <!--Optional:-->
+        <toolSpecialists>
+          <!--1 or more repetitions:-->
+          <toolSpecialist>
+            <contactUID>anyType</contactUID>
+          </toolSpecialist>
+        </toolSpecialists>
+        <!--Optional:-->
+        <customers>
+          <!--1 or more repetitions:-->
+          <customer>
+            <contactUID>string</contactUID>
+          </customer>
+        </customers>
+        <!--Optional:-->
+        <projectSpecific>anyType</projectSpecific>
+      </organigram>
+    </organization>
+  </header>
+  <executableBlocks>
+    <!--Optional:-->
+    <designCompetences>
+      <!--1 or more repetitions:-->
+      <designCompetence uID="string">
+        <label>string</label>
+        <instanceID>string</instanceID>
+        <inputs>
+          <!--1 or more repetitions:-->
+          <input>
+            <parameterUID>string</parameterUID>
+            <!--Optional:-->
+            <validRanges>
+              <!--Zero or more repetitions:-->
+              <limitRange>
+                <minimum>1.5E2</minimum>
+                <maximum>1.5E2</maximum>
+              </limitRange>
+              <!--Zero or more repetitions:-->
+              <listRange>
+                <!--1 or more repetitions:-->
+                <listRangeItem>string</listRangeItem>
+              </listRange>
+            </validRanges>
+          </input>
+        </inputs>
+        <outputs>
+          <!--1 or more repetitions:-->
+          <output>
+            <parameterUID>string</parameterUID>
+          </output>
+        </outputs>
+        <!--You have a CHOICE of the next 2 items at this level-->
+        <!--Optional:-->
+        <relatedInstanceUID>string</relatedInstanceUID>
+        <ID>string</ID>
+        <modeID>string</modeID>
+        <version>string</version>
+        <!--Optional:-->
+        <metadata>
+          <!--Optional:-->
+          <generalInfo>
+            <!--Optional:-->
+            <description>string</description>
+            <!--Optional:-->
+            <status>string</status>
+            <!--Optional:-->
+            <creationDate>2006-08-19+02:00</creationDate>
+            <!--Optional:-->
+            <owner>
+              <!--You have a CHOICE of the next 2 items at this level-->
+              <contact uID="string">
+                <name>string</name>
+                <!--Optional:-->
+                <email>string</email>
+                <!--Optional:-->
+                <company>anyType</company>
+                <!--Optional:-->
+                <department>anyType</department>
+                <!--Optional:-->
+                <function>string</function>
+                <!--Optional:-->
+                <address>string</address>
+                <!--Optional:-->
+                <telephone>string</telephone>
+                <!--Optional:-->
+                <country>string</country>
+              </contact>
+              <contactUID>string</contactUID>
+            </owner>
+            <!--Optional:-->
+            <creator>
+              <!--You have a CHOICE of the next 2 items at this level-->
+              <contact uID="string">
+                <name>string</name>
+                <!--Optional:-->
+                <email>string</email>
+                <!--Optional:-->
+                <company>anyType</company>
+                <!--Optional:-->
+                <department>anyType</department>
+                <!--Optional:-->
+                <function>string</function>
+                <!--Optional:-->
+                <address>string</address>
+                <!--Optional:-->
+                <telephone>string</telephone>
+                <!--Optional:-->
+                <country>string</country>
+              </contact>
+              <contactUID>string</contactUID>
+            </creator>
+            <!--Optional:-->
+            <operator>
+              <!--You have a CHOICE of the next 2 items at this level-->
+              <contact uID="string">
+                <name>string</name>
+                <!--Optional:-->
+                <email>string</email>
+                <!--Optional:-->
+                <company>anyType</company>
+                <!--Optional:-->
+                <department>anyType</department>
+                <!--Optional:-->
+                <function>string</function>
+                <!--Optional:-->
+                <address>string</address>
+                <!--Optional:-->
+                <telephone>string</telephone>
+                <!--Optional:-->
+                <country>string</country>
+              </contact>
+              <contactUID>string</contactUID>
+            </operator>
+            <!--Optional:-->
+            <modelDefinition>
+              <!--Optional:-->
+              <referenceDataSet>string</referenceDataSet>
+              <!--Optional:-->
+              <analysisMethod>string</analysisMethod>
+              <!--Optional:-->
+              <fittingMethod>string</fittingMethod>
+              <!--Optional:-->
+              <relatedDesignCompetenceID>string</relatedDesignCompetenceID>
+              <!--Optional:-->
+              <relatedDesignCompetenceVersion>string</relatedDesignCompetenceVersion>
+            </modelDefinition>
+          </generalInfo>
+          <!--Optional:-->
+          <performanceInfo>
+            <!--Optional:-->
+            <precision>1000.00</precision>
+            <!--Optional:-->
+            <fidelityLevel>1000.00</fidelityLevel>
+            <!--Optional:-->
+            <runTime>1000.00</runTime>
+            <!--Optional:-->
+            <standardDeviation>1000.00</standardDeviation>
+            <!--Optional:-->
+            <verifications>
+              <!--1 or more repetitions:-->
+              <verification>
+                <method>string</method>
+                <verifier>
+                  <!--You have a CHOICE of the next 2 items at this level-->
+                  <contact uID="string">
+                    <name>string</name>
+                    <!--Optional:-->
+                    <email>string</email>
+                    <!--Optional:-->
+                    <company>anyType</company>
+                    <!--Optional:-->
+                    <department>anyType</department>
+                    <!--Optional:-->
+                    <function>string</function>
+                    <!--Optional:-->
+                    <address>string</address>
+                    <!--Optional:-->
+                    <telephone>string</telephone>
+                    <!--Optional:-->
+                    <country>string</country>
+                  </contact>
+                  <contactUID>string</contactUID>
+                </verifier>
+                <result>string</result>
+                <date>2009-05-16</date>
+                <version>string</version>
+              </verification>
+            </verifications>
+          </performanceInfo>
+          <!--Optional:-->
+          <executionInfo>
+            <!--Optional:-->
+            <availabilityConstraints>
+              <!--Optional:-->
+              <fromDate>2003-08-09+02:00</fromDate>
+              <!--Optional:-->
+              <toDate>2012-09-13+02:00</toDate>
+              <!--Optional:-->
+              <fromOfficeHour>09:16:36</fromOfficeHour>
+              <!--Optional:-->
+              <toOfficeHour>17:05:32</toOfficeHour>
+              <!--Optional:-->
+              <maximumTotalExecutions>3</maximumTotalExecutions>
+              <!--Optional:-->
+              <maximumParallelExecutions>3</maximumParallelExecutions>
+            </availabilityConstraints>
+            <!--Optional:-->
+            <authorizationConstraints>
+              <!--Optional:-->
+              <authorizedUsers>
+                <!--1 or more repetitions:-->
+                <authorizedUser>
+                  <!--You have a CHOICE of the next 2 items at this level-->
+                  <contact uID="string">
+                    <name>string</name>
+                    <!--Optional:-->
+                    <email>string</email>
+                    <!--Optional:-->
+                    <company>anyType</company>
+                    <!--Optional:-->
+                    <department>anyType</department>
+                    <!--Optional:-->
+                    <function>string</function>
+                    <!--Optional:-->
+                    <address>string</address>
+                    <!--Optional:-->
+                    <telephone>string</telephone>
+                    <!--Optional:-->
+                    <country>string</country>
+                  </contact>
+                  <contactUID>string</contactUID>
+                </authorizedUser>
+              </authorizedUsers>
+              <!--Optional:-->
+              <unauthorizedUsers>
+                <!--1 or more repetitions:-->
+                <unauthorizedUser>
+                  <!--You have a CHOICE of the next 2 items at this level-->
+                  <contact uID="string">
+                    <name>string</name>
+                    <!--Optional:-->
+                    <email>string</email>
+                    <!--Optional:-->
+                    <company>anyType</company>
+                    <!--Optional:-->
+                    <department>anyType</department>
+                    <!--Optional:-->
+                    <function>string</function>
+                    <!--Optional:-->
+                    <address>string</address>
+                    <!--Optional:-->
+                    <telephone>string</telephone>
+                    <!--Optional:-->
+                    <country>string</country>
+                  </contact>
+                  <contactUID>string</contactUID>
+                </unauthorizedUser>
+              </unauthorizedUsers>
+            </authorizationConstraints>
+            <!--Optional:-->
+            <remoteComponentInfo>
+              <!--Optional:-->
+              <jobSettings>
+                <!--Optional:-->
+                <singleOrMultiExecution>single</singleOrMultiExecution>
+                <!--Optional:-->
+                <jobName>string</jobName>
+                <!--Optional:-->
+                <remoteEngineer>
+                  <!--You have a CHOICE of the next 2 items at this level-->
+                  <contact uID="string">
+                    <name>string</name>
+                    <!--Optional:-->
+                    <email>string</email>
+                    <!--Optional:-->
+                    <company>anyType</company>
+                    <!--Optional:-->
+                    <department>anyType</department>
+                    <!--Optional:-->
+                    <function>string</function>
+                    <!--Optional:-->
+                    <address>string</address>
+                    <!--Optional:-->
+                    <telephone>string</telephone>
+                    <!--Optional:-->
+                    <country>string</country>
+                  </contact>
+                  <contactUID>string</contactUID>
+                </remoteEngineer>
+                <!--Optional:-->
+                <notificationMessage>string</notificationMessage>
+              </jobSettings>
+              <!--Optional:-->
+              <dataExchangeSettings>
+                <!--Optional:-->
+                <dataserver>string</dataserver>
+                <!--Optional:-->
+                <urlsite>string</urlsite>
+                <!--Optional:-->
+                <webAuthenticationProtocol>string</webAuthenticationProtocol>
+                <!--Optional:-->
+                <context>string</context>
+                <!--Optional:-->
+                <folder>string</folder>
+                <!--Optional:-->
+                <pollingTime>1.5E2</pollingTime>
+                <!--Optional:-->
+                <maxIterations>3</maxIterations>
+                <!--Optional:-->
+                <timeOut>1.5E2</timeOut>
+                <!--Optional:-->
+                <sharedFilePolicy>string</sharedFilePolicy>
+                <!--Optional:-->
+                <servermutex>string</servermutex>
+              </dataExchangeSettings>
+            </remoteComponentInfo>
+          </executionInfo>
+        </metadata>
+        <!--Optional:-->
+        <projectSpecific>anyType</projectSpecific>
+      </designCompetence>
+    </designCompetences>
+    <!--Optional:-->
+    <mathematicalFunctions>
+      <!--1 or more repetitions:-->
+      <mathematicalFunction uID="string">
+        <label>string</label>
+        <functionType>regular</functionType>
+        <inputs>
+          <!--1 or more repetitions:-->
+          <input>
+            <parameterUID>string</parameterUID>
+            <!--Optional:-->
+            <equationLabel>string string</equationLabel>
+            <!--Optional:-->
+            <validRanges>
+              <!--Zero or more repetitions:-->
+              <limitRange>
+                <minimum>1.5E2</minimum>
+                <maximum>1.5E2</maximum>
+              </limitRange>
+              <!--Zero or more repetitions:-->
+              <listRange>
+                <!--1 or more repetitions:-->
+                <listRangeItem>string</listRangeItem>
+              </listRange>
+            </validRanges>
+          </input>
+        </inputs>
+        <outputs>
+          <!--1 or more repetitions:-->
+          <output>
+            <parameterUID>string</parameterUID>
+            <!--You have a CHOICE of the next 2 items at this level-->
+            <equations uID="string">
+              <!--1 or more repetitions:-->
+              <equation language="string">string</equation>
+            </equations>
+            <equationsUID>string</equationsUID>
+          </output>
+        </outputs>
+      </mathematicalFunction>
+    </mathematicalFunctions>
+  </executableBlocks>
+  <parameters>
+    <!--1 or more repetitions:-->
+    <parameter uID="string">
+      <label>string</label>
+      <instanceID>3</instanceID>
+      <!--Optional:-->
+      <schemaPath>string</schemaPath>
+      <!--You have a CHOICE of the next 2 items at this level-->
+      <relatedInstanceUID>string</relatedInstanceUID>
+      <!--Optional:-->
+      <description>string</description>
+      <!--Optional:-->
+      <note>string</note>
+      <!--Optional:-->
+      <unit>string</unit>
+      <!--Optional:-->
+      <dataType>string</dataType>
+    </parameter>
+  </parameters>
+  <!--Optional:-->
+  <problemDefinition uID="string">
+    <problemFormulation>
+      <mdaoArchitecture>string</mdaoArchitecture>
+      <!--Optional:-->
+      <convergerType>string</convergerType>
+      <executableBlocksOrder>
+        <!--1 or more repetitions:-->
+        <executableBlock position="3">string</executableBlock>
+      </executableBlocksOrder>
+      <allowUnconvergedCouplings>false</allowUnconvergedCouplings>
+      <!--Optional:-->
+      <doeSettings>
+        <doeMethod>string</doeMethod>
+        <!--Optional:-->
+        <doeSeed>1000.00</doeSeed>
+        <!--Optional:-->
+        <doeRuns>3</doeRuns>
+      </doeSettings>
+    </problemFormulation>
+    <problemRoles>
+      <parameters>
+        <!--Optional:-->
+        <designVariables>
+          <!--1 or more repetitions:-->
+          <designVariable uID="string">
+            <parameterUID>string</parameterUID>
+            <!--Optional:-->
+            <nominalValue>1000.00</nominalValue>
+            <!--Optional:-->
+            <validRanges>
+              <!--Zero or more repetitions:-->
+              <limitRange>
+                <minimum>1.5E2</minimum>
+                <maximum>1.5E2</maximum>
+              </limitRange>
+              <!--Zero or more repetitions:-->
+              <listRange>
+                <!--1 or more repetitions:-->
+                <listRangeItem>string</listRangeItem>
+              </listRange>
+            </validRanges>
+            <!--Optional:-->
+            <variableType>int</variableType>
+            <!--Optional:-->
+            <samples>
+              <!--1 or more repetitions:-->
+              <sample position="string">1000.00</sample>
+            </samples>
+          </designVariable>
+        </designVariables>
+        <!--Optional:-->
+        <objectiveVariables>
+          <!--1 or more repetitions:-->
+          <objectiveVariable uID="string">
+            <parameterUID>string</parameterUID>
+          </objectiveVariable>
+        </objectiveVariables>
+        <!--Optional:-->
+        <constraintVariables>
+          <!--1 or more repetitions:-->
+          <constraintVariable uID="string">
+            <parameterUID>string</parameterUID>
+            <!--Optional:-->
+            <constraintType>string</constraintType>
+            <!--Optional:-->
+            <constraintOperator>anyType</constraintOperator>
+            <!--Optional:-->
+            <referenceValue>anyType</referenceValue>
+            <!--Optional:-->
+            <requiredEqualityPrecision>1000.00</requiredEqualityPrecision>
+          </constraintVariable>
+        </constraintVariables>
+        <!--Optional:-->
+        <stateVariables>
+          <!--1 or more repetitions:-->
+          <stateVariable uID="string">
+            <parameterUID>string</parameterUID>
+          </stateVariable>
+        </stateVariables>
+      </parameters>
+      <executableBlocks>
+        <!--Optional:-->
+        <preCouplingBlocks>
+          <!--1 or more repetitions:-->
+          <preCouplingBlock>string</preCouplingBlock>
+        </preCouplingBlocks>
+        <!--Optional:-->
+        <coupledBlocks>
+          <!--1 or more repetitions:-->
+          <coupledBlock>string</coupledBlock>
+        </coupledBlocks>
+        <!--Optional:-->
+        <postCouplingBlocks>
+          <!--1 or more repetitions:-->
+          <postCouplingBlock>string</postCouplingBlock>
+        </postCouplingBlocks>
+        <!--Optional:-->
+        <preDesvarsBlocks>
+          <!--1 or more repetitions:-->
+          <preDesvarsBlock>string</preDesvarsBlock>
+        </preDesvarsBlocks>
+        <!--Optional:-->
+        <postDesvarsBlocks>
+          <!--1 or more repetitions:-->
+          <postDesvarBlock>string</postDesvarBlock>
+        </postDesvarsBlocks>
+      </executableBlocks>
+    </problemRoles>
+  </problemDefinition>
+  <!--Optional:-->
+  <workflow>
+    <!--Optional:-->
+    <problemDefinitionUID>string</problemDefinitionUID>
+    <dataGraph>
+      <name>string</name>
+      <edges>
+        <!--1 or more repetitions:-->
+        <edge>
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <fromParameterUID>string</fromParameterUID>
+          <fromExecutableBlockUID>string</fromExecutableBlockUID>
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <toParameterUID>anyType</toParameterUID>
+          <toExecutableBlockUID>anyType</toExecutableBlockUID>
+        </edge>
+      </edges>
+      <!--Optional:-->
+      <metadata>anyType</metadata>
+    </dataGraph>
+    <!--Optional:-->
+    <processGraph>
+      <name>string</name>
+      <edges>
+        <!--1 or more repetitions:-->
+        <edge>
+          <fromExecutableBlockUID>string</fromExecutableBlockUID>
+          <toExecutableBlockUID>string</toExecutableBlockUID>
+          <processStepNumber>3</processStepNumber>
+        </edge>
+      </edges>
+      <nodes>
+        <!--1 or more repetitions:-->
+        <node>
+          <referenceUID>string</referenceUID>
+          <processStepNumber>3</processStepNumber>
+          <!--Optional:-->
+          <convergerStepNumber>3</convergerStepNumber>
+          <diagonalPosition>3</diagonalPosition>
+        </node>
+      </nodes>
+      <!--Optional:-->
+      <metadata>
+        <!--Optional:-->
+        <loopNesting relatedUID="string">
+          <!--Optional:-->
+          <loopElements>
+            <!--1 or more repetitions:-->
+            <loopElement/>
+          </loopElements>
+          <!--Optional:-->
+          <functionElements>
+            <!--1 or more repetitions:-->
+            <functionElement>string</functionElement>
+          </functionElements>
+        </loopNesting>
+        <executableBlocksOrder>
+          <!--1 or more repetitions:-->
+          <executableBlock position="3">string</executableBlock>
+        </executableBlocksOrder>
+      </metadata>
+    </processGraph>
+  </workflow>
+  <!--Optional:-->
+  <architectureElements>
+    <parameters>
+      <!--Optional:-->
+      <initialGuessCouplingVariables>
+        <!--1 or more repetitions:-->
+        <initialGuessCouplingVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </initialGuessCouplingVariable>
+      </initialGuessCouplingVariables>
+      <!--Optional:-->
+      <finalCouplingVariables>
+        <!--1 or more repetitions:-->
+        <finalCouplingVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </finalCouplingVariable>
+      </finalCouplingVariables>
+      <!--Optional:-->
+      <couplingCopyVariables>
+        <!--1 or more repetitions:-->
+        <couplingCopyVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </couplingCopyVariable>
+      </couplingCopyVariables>
+      <!--Optional:-->
+      <initialGuessDesignVariables>
+        <!--1 or more repetitions:-->
+        <initialGuessDesignVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </initialGuessDesignVariable>
+      </initialGuessDesignVariables>
+      <!--Optional:-->
+      <finalDesignVariables>
+        <!--1 or more repetitions:-->
+        <finalDesignVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </finalDesignVariable>
+      </finalDesignVariables>
+      <!--Optional:-->
+      <finalOutputVariables>
+        <!--1 or more repetitions:-->
+        <finalOutputVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </finalOutputVariable>
+      </finalOutputVariables>
+      <!--Optional:-->
+      <copyDesignVariables>
+        <!--1 or more repetitions:-->
+        <copyDesignVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </copyDesignVariable>
+      </copyDesignVariables>
+      <!--Optional:-->
+      <consistencyConstraintVariables>
+        <!--1 or more repetitions:-->
+        <consistencyConstraintVariable uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </consistencyConstraintVariable>
+      </consistencyConstraintVariables>
+      <!--Optional:-->
+      <doeInputSampleLists>
+        <!--1 or more repetitions:-->
+        <doeInputSampleList uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </doeInputSampleList>
+      </doeInputSampleLists>
+      <!--Optional:-->
+      <doeOutputSampleLists>
+        <!--1 or more repetitions:-->
+        <doeOutputSampleList uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </doeOutputSampleList>
+      </doeOutputSampleLists>
+      <!--Optional:-->
+      <surrogateModelApproximates>
+        <!--1 or more repetitions:-->
+        <surrogateModelApproximate uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </surrogateModelApproximate>
+      </surrogateModelApproximates>
+      <!--Optional:-->
+      <couplingWeights>
+        <!--1 or more repetitions:-->
+        <couplingWeight uID="string">
+          <!--You have a CHOICE of the next 2 items at this level-->
+          <relatedParameterUID>string</relatedParameterUID>
+          <relatedInstanceUID>string</relatedInstanceUID>
+          <label>string</label>
+          <instanceID>3</instanceID>
+          <!--Optional:-->
+          <schemaPath>string</schemaPath>
+        </couplingWeight>
+      </couplingWeights>
+    </parameters>
+    <executableBlocks>
+      <!--Optional:-->
+      <coordinators>
+        <!--1 or more repetitions:-->
+        <coordinator uID="string">
+          <label>string</label>
+          <!--Optional:-->
+          <settings>string</settings>
+        </coordinator>
+      </coordinators>
+      <!--Optional:-->
+      <optimizers>
+        <!--1 or more repetitions:-->
+        <optimizer uID="string">
+          <!--Optional:-->
+          <label>string</label>
+          <!--Optional:-->
+          <settings>
+            <maximumIterations>1.5E2</maximumIterations>
+            <algorithm>string</algorithm>
+            <applyScaling>false</applyScaling>
+            <maximumFunctionEvaluations>1.5E2</maximumFunctionEvaluations>
+            <constraintTolerance>1.5E2</constraintTolerance>
+            <convergenceTolerance>1.5E2</convergenceTolerance>
+          </settings>
+          <!--Optional:-->
+          <designVariables>
+            <!--1 or more repetitions:-->
+            <designVariable>
+              <designVariableUID>string</designVariableUID>
+            </designVariable>
+          </designVariables>
+          <!--Optional:-->
+          <objectiveVariables>
+            <!--1 or more repetitions:-->
+            <objectiveVariable>
+              <objectiveVariableUID>string</objectiveVariableUID>
+            </objectiveVariable>
+          </objectiveVariables>
+          <!--Optional:-->
+          <constraintVariables>
+            <!--1 or more repetitions:-->
+            <constraintVariable>
+              <constraintVariableUID>string</constraintVariableUID>
+            </constraintVariable>
+          </constraintVariables>
+        </optimizer>
+      </optimizers>
+      <!--Optional:-->
+      <convergers>
+        <!--1 or more repetitions:-->
+        <converger uID="string">
+          <!--Optional:-->
+          <label>string</label>
+          <!--Optional:-->
+          <settings>
+            <linearSolver>
+              <method>string</method>
+              <lastIterationsToConsider>3</lastIterationsToConsider>
+              <maximumIterations>3</maximumIterations>
+              <convergenceToleranceRelative>1.5E2</convergenceToleranceRelative>
+              <convergenceToleranceAbsolute>1.5E2</convergenceToleranceAbsolute>
+            </linearSolver>
+            <nonlinearSolver>
+              <method>string</method>
+              <lastIterationsToConsider>3</lastIterationsToConsider>
+              <maximumIterations>3</maximumIterations>
+              <convergenceToleranceRelative>1.5E2</convergenceToleranceRelative>
+              <convergenceToleranceAbsolute>1.5E2</convergenceToleranceAbsolute>
+            </nonlinearSolver>
+          </settings>
+        </converger>
+      </convergers>
+      <!--Optional:-->
+      <does>
+        <!--1 or more repetitions:-->
+        <doe uID="string">
+          <label>string</label>
+          <settings>
+            <!--Optional:-->
+            <doeTable>
+              <!--1 or more repetitions:-->
+              <tableRow relatedParameterUID="string">
+                <!--1 or more repetitions:-->
+                <tableElement experimentID="string">1000.00</tableElement>
+              </tableRow>
+            </doeTable>
+            <!--Optional:-->
+            <doeMethod>string</doeMethod>
+            <!--Optional:-->
+            <doeRuns>100</doeRuns>
+            <!--Optional:-->
+            <doeSeed>100</doeSeed>
+          </settings>
+          <!--Optional:-->
+          <designVariables>
+            <!--1 or more repetitions:-->
+            <designVariable>
+              <designVariableUID>string</designVariableUID>
+            </designVariable>
+          </designVariables>
+        </doe>
+      </does>
+      <!--Optional:-->
+      <surrogateModels>
+        <!--1 or more repetitions:-->
+        <surrogateModel>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </surrogateModel>
+      </surrogateModels>
+      <!--Optional:-->
+      <boundaryDeterminators>
+        <!--1 or more repetitions:-->
+        <boundaryDeterminator>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </boundaryDeterminator>
+      </boundaryDeterminators>
+      <!--Optional:-->
+      <surrogateModelBuilders>
+        <!--1 or more repetitions:-->
+        <surrogateModelBuilder>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </surrogateModelBuilder>
+      </surrogateModelBuilders>
+      <!--Optional:-->
+      <preCouplingAnalyses>
+        <!--1 or more repetitions:-->
+        <preCouplingAnalysis>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </preCouplingAnalysis>
+      </preCouplingAnalyses>
+      <!--Optional:-->
+      <preIteratorAnalyses>
+        <!--1 or more repetitions:-->
+        <preIteratorAnalysis>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </preIteratorAnalysis>
+      </preIteratorAnalyses>
+      <!--Optional:-->
+      <postIteratorAnalyses>
+        <!--1 or more repetitions:-->
+        <postIteratorAnalysis>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </postIteratorAnalysis>
+      </postIteratorAnalyses>
+      <!--Optional:-->
+      <coupledAnalyses>
+        <!--1 or more repetitions:-->
+        <coupledAnalysis>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </coupledAnalysis>
+      </coupledAnalyses>
+      <!--Optional:-->
+      <postCouplingAnalyses>
+        <!--1 or more repetitions:-->
+        <postCouplingAnalysis>
+          <relatedExecutableBlockUID>string</relatedExecutableBlockUID>
+        </postCouplingAnalysis>
+      </postCouplingAnalyses>
+    </executableBlocks>
+  </architectureElements>
+</cmdows>
\ No newline at end of file
diff --git a/kadmos/cmdows/schemas/0.9/cmdows.xsd b/kadmos/cmdows/schemas/0.9/cmdows.xsd
new file mode 100644
index 000000000..a62cc0681
--- /dev/null
+++ b/kadmos/cmdows/schemas/0.9/cmdows.xsd
@@ -0,0 +1,1307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="cmdows">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="header">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="creator" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Creator of the initial CMDOWS dataset </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="description" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Description of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="timestamp" type="xs:dateTime">
+								<xs:annotation>
+									<xs:documentation>Timestamp of the initial CMDOWS dataset creation </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="fileVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="cmdowsVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the CMDOWS schema that the initial CMDOWS dataset adheres to </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="updates" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="update" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="modification" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Description of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="creator" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Creator of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="timestamp" type="xs:dateTime">
+														<xs:annotation>
+															<xs:documentation>Timestamp of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="fileVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="cmdowsVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the CMDOWS schema that the modification  to the CMDOWS dataset adheres to </xs:documentation>
+														</xs:annotation>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="organization" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="contacts">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="contact" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:all>
+																<xs:element name="name" type="xs:string">
+																	<xs:annotation>
+																		<xs:documentation>Name of the contact person</xs:documentation>
+																	</xs:annotation>
+																</xs:element>
+																<xs:element name="email" type="xs:string" minOccurs="0">
+																	<xs:annotation>
+																		<xs:documentation>E-Mail address of the contact person</xs:documentation>
+																	</xs:annotation>
+																</xs:element>
+																<xs:element name="company" minOccurs="0"/>
+																<xs:element name="department" minOccurs="0"/>
+																<xs:element name="function" type="xs:string" minOccurs="0"/>
+																<xs:element name="address" type="xs:string" minOccurs="0"/>
+																<xs:element name="telephone" type="xs:string" minOccurs="0"/>
+																<xs:element name="country" type="xs:string" minOccurs="0"/>
+															</xs:all>
+															<xs:attribute name="uID" type="xs:string" use="optional">
+																<xs:annotation>
+																	<xs:documentation>Unique ID of the contact which can be used as reference in order to avoid having the same contact twice in the document</xs:documentation>
+																</xs:annotation>
+															</xs:attribute>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="organigram" minOccurs="0">
+											<xs:complexType>
+												<xs:all>
+													<xs:element name="architects" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="architect" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="contactUID"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="integrators" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="integrator" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="contactUID"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="collaborativeEngineers" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="collaborativeEngineer" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="contactUID"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="toolSpecialists" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="toolSpecialist" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="contactUID"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="customers" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="customer" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="contactUID" type="xs:string"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="projectSpecific" type="xs:anyType" minOccurs="0"/>
+												</xs:all>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="executableBlocks">
+					<xs:complexType>
+						<xs:all>
+							<xs:element name="designCompetences" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="designCompetence" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="label" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Label of the design competence which can be used for clean printouts (e.g. 'F')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="instanceID" type="xs:string"/>
+													<xs:element name="inputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="input" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:element name="validRanges" type="rangeType" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="outputs" type="outputsType"/>
+													<xs:choice>
+														<xs:element name="relatedInstanceUID" type="xs:string" minOccurs="0">
+															<xs:annotation>
+																<xs:documentation>Element used to refer to the first instance if a certain DC has instanceID>1. modeID, ID and metadata are not stored in this case.</xs:documentation>
+															</xs:annotation>
+														</xs:element>
+														<xs:sequence>
+															<xs:element name="ID" type="xs:string">
+																<xs:annotation>
+																	<xs:documentation>Identifier of the tool to be executed</xs:documentation>
+																</xs:annotation>
+															</xs:element>
+															<xs:element name="modeID" type="xs:string">
+																<xs:annotation>
+																	<xs:documentation>Identifier of the tool mode to be executed (as a tool can usually be executed in different modes)</xs:documentation>
+																</xs:annotation>
+															</xs:element>
+															<xs:element name="version" type="xs:string"/>
+															<xs:element name="metadata" minOccurs="0">
+																<xs:complexType>
+																	<xs:sequence>
+																		<xs:element name="generalInfo" minOccurs="0">
+																			<xs:complexType>
+																				<xs:all>
+																					<xs:element name="description" type="xs:string" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Description of the design competence</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="status" type="xs:string" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Describing the state of the design competence, e.g. draft, final, for verification, ...</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="creationDate" type="xs:date" minOccurs="0"/>
+																					<xs:element name="owner" type="contactType" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Owner(s) of the design competence</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="creator" type="contactType" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Creator(s) of the design competence</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="operator" type="contactType" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Operator(s) of the design competence to be contacted in case of problems</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="modelDefinition" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Optional element for 'surrogateModel' competence types</xs:documentation>
+																						</xs:annotation>
+																						<xs:complexType>
+																							<xs:all>
+																								<xs:element name="referenceDataSet" type="xs:string" minOccurs="0"/>
+																								<xs:element name="analysisMethod" type="xs:string" minOccurs="0"/>
+																								<xs:element name="fittingMethod" type="xs:string" minOccurs="0"/>
+																								<xs:element name="relatedDesignCompetenceID" type="xs:string" minOccurs="0"/>
+																								<xs:element name="relatedDesignCompetenceVersion" type="xs:string" minOccurs="0"/>
+																							</xs:all>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:all>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="performanceInfo" minOccurs="0">
+																			<xs:complexType>
+																				<xs:all>
+																					<xs:element name="precision" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="fidelityLevel" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="runTime" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="standardDeviation" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="verifications" minOccurs="0">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="verification" maxOccurs="unbounded">
+																									<xs:complexType>
+																										<xs:all>
+																											<xs:element name="method" type="xs:string"/>
+																											<xs:element name="verifier" type="contactType"/>
+																											<xs:element name="result" type="xs:string"/>
+																											<xs:element name="date" type="xs:date"/>
+																											<xs:element name="version" type="xs:string"/>
+																										</xs:all>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:all>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="executionInfo" minOccurs="0">
+																			<xs:complexType>
+																				<xs:all>
+																					<xs:element name="availabilityConstraints" minOccurs="0">
+																						<xs:complexType>
+																							<xs:all>
+																								<xs:element name="fromDate" type="xs:date" minOccurs="0"/>
+																								<xs:element name="toDate" type="xs:date" minOccurs="0"/>
+																								<xs:element name="fromOfficeHour" type="xs:time" minOccurs="0"/>
+																								<xs:element name="toOfficeHour" type="xs:time" minOccurs="0"/>
+																								<xs:element name="maximumTotalExecutions" type="xs:int" minOccurs="0"/>
+																								<xs:element name="maximumParallelExecutions" type="xs:int" minOccurs="0"/>
+																							</xs:all>
+																						</xs:complexType>
+																					</xs:element>
+																					<xs:element name="authorizationConstraints" minOccurs="0">
+																						<xs:complexType>
+																							<xs:all>
+																								<xs:element name="authorizedUsers" minOccurs="0">
+																									<xs:complexType>
+																										<xs:sequence>
+																											<xs:element name="authorizedUser" type="contactType" maxOccurs="unbounded"/>
+																										</xs:sequence>
+																									</xs:complexType>
+																								</xs:element>
+																								<xs:element name="unauthorizedUsers" minOccurs="0">
+																									<xs:complexType>
+																										<xs:sequence>
+																											<xs:element name="unauthorizedUser" type="contactType" maxOccurs="unbounded"/>
+																										</xs:sequence>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:all>
+																						</xs:complexType>
+																					</xs:element>
+																					<xs:element name="remoteComponentInfo" minOccurs="0">
+																						<xs:complexType>
+																							<xs:all>
+																								<xs:element name="jobSettings" minOccurs="0">
+																									<xs:complexType>
+																										<xs:all>
+																											<xs:element name="singleOrMultiExecution" minOccurs="0">
+																												<xs:simpleType>
+																													<xs:restriction base="xs:string">
+																														<xs:enumeration value="single"/>
+																														<xs:enumeration value="multiple"/>
+																													</xs:restriction>
+																												</xs:simpleType>
+																											</xs:element>
+																											<xs:element name="jobName" type="xs:string" minOccurs="0"/>
+																											<xs:element name="remoteEngineer" type="contactType" minOccurs="0"/>
+																											<xs:element name="notificationMessage" type="xs:string" minOccurs="0"/>
+																										</xs:all>
+																									</xs:complexType>
+																								</xs:element>
+																								<xs:element name="dataExchangeSettings" minOccurs="0">
+																									<xs:complexType>
+																										<xs:all>
+																											<xs:element name="dataserver" type="xs:string" minOccurs="0"/>
+																											<xs:element name="urlsite" type="xs:string" minOccurs="0"/>
+																											<xs:element name="webAuthenticationProtocol" type="xs:string" minOccurs="0"/>
+																											<xs:element name="context" type="xs:string" minOccurs="0"/>
+																											<xs:element name="folder" type="xs:string" minOccurs="0"/>
+																											<xs:element name="pollingTime" type="xs:float" minOccurs="0"/>
+																											<xs:element name="maxIterations" type="xs:int" minOccurs="0"/>
+																											<xs:element name="timeOut" type="xs:float" minOccurs="0"/>
+																											<xs:element name="sharedFilePolicy" type="xs:string" minOccurs="0"/>
+																											<xs:element name="servermutex" type="xs:string" minOccurs="0"/>
+																										</xs:all>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:all>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:all>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:complexType>
+															</xs:element>
+															<xs:element name="projectSpecific" type="xs:anyType" minOccurs="0">
+																<xs:annotation>
+																	<xs:documentation>Free element containing any project specific information  (e.g. for RCE or Optimus).</xs:documentation>
+																</xs:annotation>
+															</xs:element>
+														</xs:sequence>
+													</xs:choice>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the design competence which can be used as reference in the problem definition etc. By convention this identifier should be of the following form ID[modeID][instanceID][version]</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="mathematicalFunctions" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="mathematicalFunction" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="label" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Name of the function which can be used for clean printouts (e.g. 'G')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="functionType">
+														<xs:simpleType>
+															<xs:restriction base="xs:string">
+																<xs:enumeration value="regular"/>
+																<xs:enumeration value="consistency"/>
+															</xs:restriction>
+														</xs:simpleType>
+													</xs:element>
+													<xs:element name="inputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="input" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:element name="equationLabel" minOccurs="0">
+																						<xs:simpleType>
+																							<xs:list itemType="xs:string"/>
+																						</xs:simpleType>
+																					</xs:element>
+																					<xs:element name="validRanges" type="rangeType" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="outputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="output" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:choice>
+																						<xs:element name="equations" type="equationsType">
+																							<xs:annotation>
+																								<xs:documentation>A mathematical function output can be defined by mulitple equivalent equations in different languages</xs:documentation>
+																							</xs:annotation>
+																						</xs:element>
+																						<xs:element name="equationsUID" type="xs:string">
+																							<xs:annotation>
+																								<xs:documentation>A mathematical function output can also be defined by a reference to another group of equivalent equations in different languages</xs:documentation>
+																							</xs:annotation>
+																						</xs:element>
+																					</xs:choice>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the function which can be used as reference in the problem definition etc. (e.g. 'G')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:all>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="parameters">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameter" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="label" type="xs:string">
+											<xs:annotation>
+												<xs:documentation>Label of the parameter which can be used for clean printouts (e.g. 'y1')</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="instanceID" type="xs:int">
+											<xs:annotation>
+												<xs:documentation>The instance of the parameter determines way in which it is referenced and what information is saved.</xs:documentation>											
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="schemaPath" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>The path of the parameter which is only saved when instanceID is 1.</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:choice>
+											<xs:element name="relatedInstanceUID" type="xs:string">
+												<xs:annotation>
+													<xs:documentation>In case instanceID is higher than 1 the parameter is only referenced to the first instance of the parameter.</xs:documentation>
+												</xs:annotation>
+											</xs:element>
+											<xs:sequence>
+												<xs:element name="description" type="xs:string" minOccurs="0">
+													<xs:annotation>
+														<xs:documentation>Detailed description of the parameter</xs:documentation>
+													</xs:annotation>
+												</xs:element>
+												<xs:element name="note" type="xs:string" minOccurs="0">
+													<xs:annotation>
+														<xs:documentation>Any additional note for the parameter</xs:documentation>
+													</xs:annotation>
+												</xs:element>
+												<xs:element name="unit" type="xs:string" minOccurs="0"/>
+												<xs:element name="dataType" type="xs:string" minOccurs="0"/>
+											</xs:sequence>
+										</xs:choice>
+									</xs:sequence>
+									<xs:attribute name="uID" type="xs:string" use="required">
+										<xs:annotation>
+											<xs:documentation>Unique ID of the parameter which can be used as reference in the problem definition etc. (e.g. '/data_schema/analyses/y1')</xs:documentation>
+										</xs:annotation>
+									</xs:attribute>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="problemDefinition" minOccurs="0">
+					<xs:complexType>
+						<xs:all>
+							<xs:element name="problemFormulation">
+								<xs:complexType>
+									<xs:all>
+										<xs:element name="mdaoArchitecture" type="xs:string"/>
+										<xs:element name="convergerType" type="xs:string" minOccurs="0"/>
+										<xs:element name="executableBlocksOrder" type="executableBlocksType"/>
+										<xs:element name="allowUnconvergedCouplings" type="xs:boolean"/>
+										<xs:element name="doeSettings" minOccurs="0">
+											<xs:complexType>
+												<xs:all>
+													<xs:element name="doeMethod" type="xs:string"/>
+													<xs:element name="doeSeed" type="xs:decimal" minOccurs="0"/>
+													<xs:element name="doeRuns" type="xs:int" minOccurs="0"/>
+												</xs:all>
+											</xs:complexType>
+										</xs:element>
+									</xs:all>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="problemRoles">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="parameters">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="designVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="designVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="nominalValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="validRanges" type="rangeType" minOccurs="0"/>
+																					<xs:element name="variableType" minOccurs="0">
+																						<xs:simpleType>
+																							<xs:restriction base="xs:string">
+																								<xs:enumeration value="int"/>
+																								<xs:enumeration value="real"/>
+																							</xs:restriction>
+																						</xs:simpleType>
+																					</xs:element>
+																					<xs:element name="samples" minOccurs="0">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="sample" maxOccurs="unbounded">
+																									<xs:complexType>
+																										<xs:simpleContent>
+																											<xs:extension base="xs:decimal">
+																												<xs:attribute name="position" type="xs:string"/>
+																											</xs:extension>
+																										</xs:simpleContent>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="objectiveVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="objectiveVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="constraintVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="constraintVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="constraintType" type="xs:string" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Either 'inequality' or  'equality'</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="constraintOperator" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Either '==', 'lt', 'gt', 'lt=', 'gt=' or combination of inequality constraints</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="referenceValue" type="xs:anyType" minOccurs="0"/>
+																					<xs:element name="requiredEqualityPrecision" type="xs:decimal" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="stateVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="stateVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="executableBlocks">
+											<xs:complexType>
+												<xs:all>
+													<xs:element name="preCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="coupledBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="coupledBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="preDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preDesvarsBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postDesvarBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:all>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:all>
+						<xs:attribute name="uID" type="xs:string" use="required"/>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="workflow" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemDefinitionUID" type="xs:string" minOccurs="0"/>
+							<xs:element name="dataGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:choice>
+																	<xs:element name="fromParameterUID" type="xs:string"/>
+																	<xs:element name="fromExecutableBlockUID" type="xs:string"/>
+																</xs:choice>
+																<xs:choice>
+																	<xs:element name="toParameterUID"/>
+																	<xs:element name="toExecutableBlockUID"/>
+																</xs:choice>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="metadata" minOccurs="0"/>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="processGraph" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromExecutableBlockUID" type="xs:string"/>
+																<xs:element name="toExecutableBlockUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="nodes">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="node" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="referenceUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+																<xs:element name="convergerStepNumber" type="xs:int" minOccurs="0"/>
+																<xs:element name="diagonalPosition" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="metadata" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="loopNesting" type="loopElementType" minOccurs="0"/>
+													<xs:element name="executableBlocksOrder" type="executableBlocksType"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="architectureElements" minOccurs="0">
+					<xs:complexType>
+						<xs:all>
+							<xs:element name="parameters">
+								<xs:complexType>
+									<xs:all>
+										<xs:element name="initialGuessCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="couplingCopyVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="couplingCopyVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="initialGuessDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalOutputVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalOutputVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="copyDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="copyDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeInputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeInputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeOutputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeOutputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="surrogateModelApproximates" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="surrogateModelApproximate" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="couplingWeights" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="couplingWeight" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:all>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="executableBlocks">
+								<xs:complexType>
+									<xs:all>
+										<xs:element name="coordinators" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coordinator" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="optimizers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="optimizer" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="optimizerType">
+																	<xs:sequence>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="objectiveVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="objectiveVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="objectiveVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="constraintVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="constraintVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="constraintVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="convergers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="converger" type="convergerType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="does" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doe" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simplerArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="settings">
+																			<xs:complexType>
+																				<xs:all>
+																					<xs:element name="doeTable" minOccurs="0">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="tableRow" maxOccurs="unbounded">
+																									<xs:complexType>
+																										<xs:sequence>
+																											<xs:element name="tableElement" maxOccurs="unbounded">
+																												<xs:complexType>
+																													<xs:simpleContent>
+																														<xs:extension base="xs:decimal">
+																															<xs:attribute name="experimentID" type="xs:string"/>
+																														</xs:extension>
+																													</xs:simpleContent>
+																												</xs:complexType>
+																											</xs:element>
+																										</xs:sequence>
+																										<xs:attribute name="relatedParameterUID" type="xs:string"/>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																					<xs:element name="doeMethod" type="xs:string" minOccurs="0"/>
+																					<xs:element name="doeRuns" type="xs:integer" minOccurs="0"/>
+																					<xs:element name="doeSeed" type="xs:integer" minOccurs="0"/>
+																				</xs:all>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="surrogateModels" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="surrogateModel" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="boundaryDeterminators" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="boundaryDeterminator" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="surrogateModelBuilders" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="surrogateModelBuilder" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="coupledAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coupledAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:all>
+								</xs:complexType>
+							</xs:element>
+						</xs:all>
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="rangeType">
+		<xs:sequence>
+			<xs:element name="limitRange" minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Range defined by two limits</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:all>
+						<xs:element name="minimum" type="xs:float"/>
+						<xs:element name="maximum" type="xs:float"/>
+					</xs:all>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="listRange" minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Range defined by a list of items</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="listRangeItem" type="xs:string" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="inoutType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>ID of the parameter which serves as input or output  (e.g. '/data_schema/analyses/y2')</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="equationsType">
+		<xs:sequence>
+			<xs:element name="equation" maxOccurs="unbounded">
+				<xs:complexType>
+					<xs:simpleContent>
+						<xs:extension base="xs:string">
+							<xs:attribute name="language" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>The language in which the equation is formulated (e.g.  Python or MathML)</xs:documentation>
+								</xs:annotation>
+							</xs:attribute>
+						</xs:extension>
+					</xs:simpleContent>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="outputsType">
+		<xs:sequence>
+			<xs:element name="output" type="inoutType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="contactType">
+		<xs:choice>
+			<xs:element name="contact">
+				<xs:complexType>
+					<xs:all>
+						<xs:element name="name" type="xs:string">
+							<xs:annotation>
+								<xs:documentation>Name of the contact person</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element name="email" type="xs:string" minOccurs="0">
+							<xs:annotation>
+								<xs:documentation>E-Mail address of the contact person</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element name="company" minOccurs="0"/>
+						<xs:element name="department" minOccurs="0"/>
+						<xs:element name="function" type="xs:string" minOccurs="0"/>
+						<xs:element name="address" type="xs:string" minOccurs="0"/>
+						<xs:element name="telephone" type="xs:string" minOccurs="0"/>
+						<xs:element name="country" type="xs:string" minOccurs="0"/>
+					</xs:all>
+					<xs:attribute name="uID" type="xs:string" use="optional">
+						<xs:annotation>
+							<xs:documentation>Unique ID of the contact which can be used as reference in order to avoid having the same contact twice in the document</xs:documentation>
+						</xs:annotation>
+					</xs:attribute>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="contactUID" type="xs:string"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="loopElementType">
+		<xs:sequence>
+			<xs:element name="loopElements" minOccurs="0">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="loopElement" type="loopElementType" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="functionElements" minOccurs="0">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="functionElement" type="xs:string" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+		<xs:attribute name="relatedUID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleVariableType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsVariableType">
+		<xs:sequence>
+			<xs:choice>
+				<xs:element name="relatedParameterUID" type="xs:string"/>
+				<xs:element name="relatedInstanceUID" type="xs:string"/>
+			</xs:choice>
+			<xs:element name="label" type="xs:string"/>
+			<xs:element name="instanceID" type="xs:int"/>
+			<xs:element name="schemaPath" type="xs:string" minOccurs="0"/>
+		</xs:sequence>	
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="convergerType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string" minOccurs="0"/>
+			<xs:element name="settings" minOccurs="0">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="linearSolver" type="solverSettingsType"/>
+						<xs:element name="nonlinearSolver" type="solverSettingsType"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="solverSettingsType">
+		<xs:sequence>
+			<xs:element name="method" type="xs:string"/>
+			<xs:element name="lastIterationsToConsider" type="xs:int"/>
+			<xs:element name="maximumIterations" type="xs:int"/>
+			<xs:element name="convergenceToleranceRelative" type="xs:float"/>
+			<xs:element name="convergenceToleranceAbsolute" type="xs:float"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="optimizerType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string" minOccurs="0"/>
+			<xs:element name="settings" minOccurs="0">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="maximumIterations" type="xs:float"/>
+						<xs:element name="algorithm" type="xs:string"/>
+						<xs:element name="applyScaling" type="xs:boolean"/>
+						<xs:element name="maximumFunctionEvaluations" type="xs:float"/>
+						<xs:element name="constraintTolerance" type="xs:float"/>
+						<xs:element name="convergenceTolerance" type="xs:float"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>		
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+			<xs:element name="settings" type="xs:string" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simplerArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsRelatedBlockType">
+		<xs:sequence>
+			<xs:element name="relatedExecutableBlockUID" type="xs:string"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="executableBlocksType">
+		<xs:sequence>
+			<xs:element name="executableBlock" maxOccurs="unbounded">
+				<xs:complexType>
+					<xs:simpleContent>
+						<xs:extension base="xs:string">
+							<xs:attribute name="position" type="xs:int"/>
+						</xs:extension>
+					</xs:simpleContent>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
diff --git a/kadmos/graph/graph_data.py b/kadmos/graph/graph_data.py
index 1a4cb324d..d4f10ff73 100644
--- a/kadmos/graph/graph_data.py
+++ b/kadmos/graph/graph_data.py
@@ -9,6 +9,8 @@ import re
 import random
 
 import operator as oper
+from collections import OrderedDict
+
 import networkx as nx
 import matplotlib.pyplot as plt
 import numpy as np
@@ -4298,7 +4300,7 @@ class FundamentalProblemGraph(DataGraph, KeChainMixin):
                 sys_opt, sys_opt_label = graph.OPTIMIZER_STRING, graph.OPTIMIZER_LABEL
                 # Connect optimizer as a converger using the consistency constraint function
                 mdg.connect_converger(sys_opt, graph.OPTIONS_ARCHITECTURES[2], coup_functions, True,
-                                      label=sys_opt_label, converger_is_optimizer=True)
+                                      label=sys_opt_label, conv_is_optimizer=True)
             # Connect optimizer w.r.t. design variables, objective, constraints
             # noinspection PyUnboundLocalVariable
             mdg.connect_optimizer(sys_opt, des_var_nodes, objective_node, constraint_nodes, label=sys_opt_label)
@@ -4858,10 +4860,13 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
                         if 'settings' not in self.nodes[cmdows_uid] or self.nodes[cmdows_uid]['settings'] is None:
                             self.nodes[cmdows_uid]['settings'] = {}
                         if role == 'converger':
-                            setting_options = {'last_iterations_to_consider': 'lastIterationsToConsider',
-                                               'maximum_iterations': 'maximumIterations',
-                                               'convergence_tolerance_relative': 'convergenceToleranceRelative',
-                                               'convergence_tolerance_absolute': 'convergenceToleranceAbsolute'}
+                            setting_options = {'linear_solver': 'linearSolver',
+                                               'nonlinear_solver': 'nonlinearSolver'}
+                            solver_settings_options = {'method': 'method',
+                                                       'last_iterations_to_consider': 'lastIterationsToConsider',
+                                                       'maximum_iterations': 'maximumIterations',
+                                                       'convergence_tolerance_relative': 'convergenceToleranceRelative',
+                                                       'convergence_tolerance_absolute': 'convergenceToleranceAbsolute'}
                         else:
                             setting_options = {'maximum_iterations': 'maximumIterations',
                                                'algorithm': 'algorithm',
@@ -4877,9 +4882,15 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
                                                                                                setting_options
                                                                                                [setting_option])]
                             else:
-                                self.nodes[cmdows_uid]['settings'][setting_option] = \
-                                    cmdows_single_architecture_exe_block.findtext('settings/' +
-                                                                                  setting_options[setting_option])
+                                if role == 'optimizer':
+                                    self.nodes[cmdows_uid]['settings'][setting_option] = \
+                                        cmdows_single_architecture_exe_block.findtext('settings/' +
+                                                                                      setting_options[setting_option])
+                                elif role == 'converger':
+                                    self.nodes[cmdows_uid]['settings'][setting_option] = \
+                                        OrderedDict((((key, cmdows_single_architecture_exe_block.findtext('settings/' +
+                                             setting_options[setting_option] + '/' + solver_settings_options[key])) for
+                                                      key in solver_settings_options)))
                     if role == 'optimizer':
                         cmdows_des_vars = \
                             cmdows_single_architecture_exe_block.findall('objectiveVariables/objectiveVariable')
@@ -4982,18 +4993,6 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
             for func in functions:
                 self.nodes[func]['architecture_role'] = self.ARCHITECTURE_ROLES_FUNS[6]
 
-        # Converger required
-        if mdao_arch == self.OPTIONS_ARCHITECTURES[6]:  # con-DOE
-            # Add converger
-            assert not self.has_node(self.CONVERGER_STRING), 'Converger name already in use in FPG.'
-            self.add_node(self.CONVERGER_STRING,
-                          category='function',
-                          architecture_role=self.ARCHITECTURE_ROLES_FUNS[2],
-                          shape='8',
-                          label=self.CONVERGER_LABEL,
-                          settings={'convergence_tolerance_absolute': 1e-6, 'convergence_tolerance_relative': 1e-6,
-                                    'last_iterations_to_consider': 1, 'maximum_iterations': 100})
-
         # Add architecture role to coupled functions
         for func in mg_function_ordering[self.FUNCTION_ROLES[1]]:
             self.nodes[func]['architecture_role'] = self.ARCHITECTURE_ROLES_FUNS[7]
@@ -5463,7 +5462,7 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
         return conv_check_node
 
     def connect_converger(self, converger, conv_type, coupling_functions, include_couplings_as_final_output,
-                          system_converger=False, label='CONV', converger_is_optimizer=False):
+                          system_converger=False, label='CONV', conv_is_optimizer=False):
         """Method to automatically connect a converger around a collection of coupled functions.
 
         :param converger: name of the converger to be connected
@@ -5485,18 +5484,27 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
         if not self.has_node(converger):
             self.add_node(converger,
                           category='function',
-                          architecture_role=self.ARCHITECTURE_ROLES_FUNS[1] if converger_is_optimizer else
+                          architecture_role=self.ARCHITECTURE_ROLES_FUNS[1] if conv_is_optimizer else
                           self.ARCHITECTURE_ROLES_FUNS[2],
                           label=label,
                           instance=1,
-                          settings={'convergence_tolerance_absolute': 1e-6, 'convergence_tolerance_relative': 1e-6,
-                                    'last_iterations_to_consider': 1, 'maximum_iterations': 100} if not
-                                    converger_is_optimizer else {'algorithm': 'Dakota Quasi-Newton method',
-                                      'maximum_iterations': 1000,
-                                      'maximum_function_evaluations': 1000,
-                                      'constraint_tolerance': 1e-4,
-                                      'convergence_tolerance': 1e-4,
-                                      'apply_scaling': True})
+                          settings=OrderedDict((('linear_solver', OrderedDict((('method', conv_type),
+                                                                               ('last_iterations_to_consider', 1),
+                                                                               ('maximum_iterations', 100),
+                                                                               ('convergence_tolerance_relative', 1e-6),
+                                                                               ('convergence_tolerance_absolute', 1e-6)))),
+                                               ('nonlinear_solver', OrderedDict((('method', conv_type),
+                                                                                 ('last_iterations_to_consider', 1),
+                                                                                 ('maximum_iterations', 100),
+                                                                                 ('convergence_tolerance_relative', 1e-6),
+                                                                                 ('convergence_tolerance_absolute', 1e-6)))
+                                                ))) if not conv_is_optimizer else
+                                   {'algorithm': 'Dakota Quasi-Newton method',
+                                    'maximum_iterations': 1000,
+                                    'maximum_function_evaluations': 1000,
+                                    'constraint_tolerance': 1e-4,
+                                    'convergence_tolerance': 1e-4,
+                                    'apply_scaling': True})
         assert conv_type in self.OPTIONS_CONVERGERS + [self.OPTIONS_ARCHITECTURES[2]], \
             'Invalid converger type %s specified.' % conv_type
         assert isinstance(coupling_functions, list)
@@ -5924,7 +5932,7 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
                 nodes = sub_func_orderings[partition]['coupled']
             # Connect nodes to (sub)system converger or system optimizer
             self.connect_converger(conv, conv_type, nodes, True, label=conv_label,
-                                   converger_is_optimizer=converger_is_optimizer)
+                                   conv_is_optimizer=converger_is_optimizer)
 
         # Connect remaining couplings to the system converger or optimizer
         if mdao_arch == self.OPTIONS_ARCHITECTURES[2]:
@@ -5933,7 +5941,7 @@ class MdaoDataGraph(DataGraph, MdaoMixin):
             conv, conv_label, conv_type = sys_conv, sys_conv_label, self.OPTIONS_CONVERGERS[0]
         converger_is_optimizer = True if conv == sys_opt else False
         self.connect_converger(conv, conv_type, coup_functions, True, system_converger=True, label=conv_label,
-                               converger_is_optimizer=converger_is_optimizer)
+                               conv_is_optimizer=converger_is_optimizer)
 
         # Resolve problematic variables
         prob_var = self.find_all_nodes(subcategory='all splittable variables')
diff --git a/kadmos/graph/graph_kadmos.py b/kadmos/graph/graph_kadmos.py
index 1b786868d..ec058d3ce 100644
--- a/kadmos/graph/graph_kadmos.py
+++ b/kadmos/graph/graph_kadmos.py
@@ -66,7 +66,7 @@ class KadmosGraph(nx.DiGraph, EquationMixin, VistomsMixin):
                            'Custom design table']     # 3
     OPTIONS_CONVERGERS = ['Jacobi', 'Gauss-Seidel', None]
     FUNCTION_ROLES = ['pre-coupling', 'coupled', 'post-coupling', 'pre-desvars', 'post-desvars']
-    CMDOWS_VERSION = '0.8'
+    CMDOWS_VERSION = '0.9'
     CMDOWS_ATTRIBUTES = ['nominal_value', 'valid_ranges', 'constraint_type', 'constraint_operator',
                          'reference_value', 'required_equality_precision', 'samples', 'variable_type']
     CMDOWS_ATTRIBUTE_DICT = {i: j for i, j in zip(CMDOWS_ATTRIBUTES, [k for k in CMDOWS_ATTRIBUTES])}
-- 
GitLab