Merge branch '1.11.x' into master for 1.11.3 release

# Conflicts:
#	plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editors/UIFBNetworkContextMenuProvider.java
#	plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/ConnectionEditPart.java

Change-Id: I223949e4e75587856f0f919b112f559da0588c8e
Signed-off-by: Alois Zoitl <alois.zoitl@gmx.at>
diff --git a/data/typelibrary/Arrowhead/EventHandler/ArrowheadEvent.dtp b/data/typelibrary/Arrowhead/EventHandler/ArrowheadEvent.dtp
new file mode 100644
index 0000000..daef7b7
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/ArrowheadEvent.dtp
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
+<DataType Name="ArrowheadEvent" Comment="Event type of the Arrowhead Framework" >
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2019-09-17" />
+  <ASN1Tag Class="APPLICATION" Number="1" />
+  <StructuredType >
+    <VarDeclaration Name="type" Type="WSTRING" Comment="The type of the event, an event ID of sorts." />
+	<VarDeclaration Name="payload" Type="WSTRING" Comment="String data of the event." />
+	<VarDeclaration Name="timestamp" Type="DATE_AND_TIME" Comment="Date and time of the event." />
+	<VarDeclaration Name="eventMetadata" Type="WSTRING" ArraySize="10" Comment="Key=value pairs of additional data about the event." />
+  </StructuredType>
+</DataType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/ArrowheadPublish.fbt b/data/typelibrary/Arrowhead/EventHandler/ArrowheadPublish.fbt
new file mode 100644
index 0000000..9fa8283
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/ArrowheadPublish.fbt
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Publish event Function Block" Name="ArrowheadPublish">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <EventInputs>
+      <Event Comment="Publish Event" Name="publish" Type="Event">
+        <With Var="publishEvent"/>
+        <With Var="endpoint"/>
+      </Event>
+    </EventInputs>
+    <EventOutputs>
+      <Event Comment="Event was published" Name="published" Type="Event"/>
+    </EventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="Publish event to be sent" Name="publishEvent" Type="PublishEvent"/>
+      <VarDeclaration Comment="Endpoint (IP:PORT/URI) of the Event Handler (not officially in the documentation, but it simplifies the FBs)" Name="endpoint" Type="WSTRING"/>
+    </InputVars>
+    <Plugs>
+      <AdapterDeclaration Comment="" Name="ArrowheadPublishAdp" Type="ArrowheadPublishAdp" x="2200.0" y="-200.0"/>
+    </Plugs>
+  </InterfaceList>
+  <FBNetwork>
+    <EventConnections>
+      <Connection Comment="" Destination="ArrowheadPublishAdp.publish" Source="publish" dx1="805.0"/>
+      <Connection Comment="" Destination="published" Source="ArrowheadPublishAdp.published" dx1="60.0" dx2="60.0" dy="55.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="ArrowheadPublishAdp.publishEvent" Source="publishEvent" dx1="805.0"/>
+      <Connection Comment="" Destination="ArrowheadPublishAdp.endpoint" Source="endpoint" dx1="805.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/ArrowheadPublishAdp.adp b/data/typelibrary/Arrowhead/EventHandler/ArrowheadPublishAdp.adp
new file mode 100644
index 0000000..c832026
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/ArrowheadPublishAdp.adp
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE AdapterType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<AdapterType Comment="Publish event adapter" Name="ArrowheadPublishAdp">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <CompilerInfo header="package fb.test;"/>
+  <InterfaceList>
+    <EventInputs>
+      <Event Comment="Publish finished" Name="published" Type="Event"/>
+    </EventInputs>
+    <EventOutputs>
+      <Event Comment="Publish event" Name="publish" Type="Event">
+        <With Var="publishEvent"/>
+        <With Var="endpoint"/>
+      </Event>
+    </EventOutputs>
+    <OutputVars>
+      <VarDeclaration Comment="Publish event to be sent" Name="publishEvent" Type="PublishEvent"/>
+      <VarDeclaration Comment="Endpoint (IP:PORT/URI) of the Event Handler (not officially in the documentation, but it simplifies the FBs)" Name="endpoint" Type="WSTRING"/>
+    </OutputVars>
+  </InterfaceList>
+  <Service Comment="Publish event adapter" LeftInterface="SOCKET" RightInterface="PLUG">
+    <ServiceSequence Comment="" Name="request_confirm">
+      <ServiceTransaction>
+        <InputPrimitive Event="REQ" Interface="SOCKET" Parameters="REQD"/>
+        <OutputPrimitive Event="REQ" Interface="PLUG" Parameters="REQD"/>
+      </ServiceTransaction>
+      <ServiceTransaction>
+        <InputPrimitive Event="CNF" Interface="PLUG" Parameters="CNFD"/>
+        <OutputPrimitive Event="CNF" Interface="SOCKET" Parameters="CNFD"/>
+      </ServiceTransaction>
+    </ServiceSequence>
+    <ServiceSequence Comment="" Name="indication_response">
+      <ServiceTransaction>
+        <InputPrimitive Event="IND" Interface="PLUG" Parameters="INDD"/>
+        <OutputPrimitive Event="IND" Interface="SOCKET" Parameters="INDD"/>
+      </ServiceTransaction>
+      <ServiceTransaction>
+        <InputPrimitive Event="RSP" Interface="SOCKET" Parameters="RSPD"/>
+        <OutputPrimitive Event="RSP" Interface="PLUG" Parameters="RSPD"/>
+      </ServiceTransaction>
+    </ServiceSequence>
+  </Service>
+</AdapterType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/EventFilter.dtp b/data/typelibrary/Arrowhead/EventHandler/EventFilter.dtp
new file mode 100644
index 0000000..aa937ab
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/EventFilter.dtp
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
+<DataType Name="EventFilter" Comment="EventFilter type used to subsribe/unsubscribe to/from the EventHandler" >
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2019-09-17" />
+  <ASN1Tag Class="APPLICATION" Number="1" />
+  <StructuredType >
+    <VarDeclaration Name="eventType" Type="WSTRING" Comment="Event type, similar to topics in MQTT." />
+    <VarDeclaration Name="consumer" Type="ArrowheadSystem" Comment="The Subscriber ArrowheadSystem, that will consume the new events." />
+    <VarDeclaration Name="sources" Type="ArrowheadSystem" ArraySize="10" Comment="List of ArrowheadSystem the Subscriber wants to receive events from." />
+	<VarDeclaration Name="startDate" Type="DATE_AND_TIME" Comment="If set, the Subscriber wants to receive events with timestamps after this date-time." />
+	<VarDeclaration Name="endDate" Type="DATE_AND_TIME" Comment="If set, the Subscriber wants to receive events with timestamps before this date-time." />
+	<VarDeclaration Name="filterMetadata" Type="WSTRING" ArraySize="10" Comment="Metadata about the events, which can be used for further filtering." />
+	<VarDeclaration Name="notifyUri" Type="WSTRING" Comment="The URL subpath where the Event Handler should sent the new events to." />
+	<VarDeclaration Name="matchMetadata" Type="BOOL" Comment="Should the Event Handler filter events based on the metadata." />
+  </StructuredType>
+</DataType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/FieldsToArrowheadEvent.fbt b/data/typelibrary/Arrowhead/EventHandler/FieldsToArrowheadEvent.fbt
new file mode 100644
index 0000000..1bdba70
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/FieldsToArrowheadEvent.fbt
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Transform individual fields to an Arrowhead Event type" Name="FieldsToArrowheadEvent">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-10-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <EventInputs>
+      <Event Comment="Normal Execution Request" Name="REQ" Type="Event">
+        <With Var="type"/>
+        <With Var="payload"/>
+        <With Var="timestamp"/>
+        <With Var="eventMetadata"/>
+      </Event>
+    </EventInputs>
+    <EventOutputs>
+      <Event Comment="Execution Confirmation" Name="CNF" Type="Event">
+        <With Var="arrowheadEvent"/>
+      </Event>
+    </EventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="The type of the event, an event ID of sorts" Name="type" Type="WSTRING"/>
+      <VarDeclaration Comment="String data of the event" Name="payload" Type="WSTRING"/>
+      <VarDeclaration Comment="Date and time of the event" Name="timestamp" Type="DATE_AND_TIME"/>
+      <VarDeclaration ArraySize="10" Comment="Key=value pairs of additional data about the event" Name="eventMetadata" Type="WSTRING"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration Comment="Created Arrowhead event" Name="arrowheadEvent" Type="ArrowheadEvent"/>
+    </OutputVars>
+  </InterfaceList>
+  <BasicFB>
+    <ECC>
+      <ECState Comment="Initial State" Name="START" x="1565.0" y="695.0"/>
+      <ECState Comment="" Name="REQ" x="780.0" y="1215.0">
+        <ECAction Algorithm="REQ" Output="CNF"/>
+      </ECState>
+      <ECTransition Comment="" Condition="1" Destination="START" Source="REQ" x="725.0" y="690.0"/>
+      <ECTransition Comment="" Condition="REQ" Destination="REQ" Source="START" x="1295.0" y="1005.0"/>
+    </ECC>
+    <Algorithm Comment="Initialization algorithm" Name="REQ">
+      <ST Text="VAR&#13;&#10;  i: INT;&#13;&#10;END_VAR;&#13;&#10;&#13;&#10;i := 0;&#13;&#10;arrowheadEvent.type := type; &#13;&#10;arrowheadEvent.payload := payload;&#13;&#10;arrowheadEvent.timestamp = timestamp;&#13;&#10;&#13;&#10;WHILE i &lt; 10 DO //looks like while is faster than FOR when exporting to cpp&#13;&#10;  arrowheadEvent.eventMetadata[i] :=  eventMetadata[i];&#13;&#10;  i := i + 1;&#13;&#10;END_WHILE"/>
+    </Algorithm>
+  </BasicFB>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/FieldsToEventFilter.fbt b/data/typelibrary/Arrowhead/EventHandler/FieldsToEventFilter.fbt
new file mode 100644
index 0000000..6d488ad
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/FieldsToEventFilter.fbt
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Transform individual fields to an Arrowhead Event Filter type" Name="FieldsToEventFilter">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <EventInputs>
+      <Event Comment="Normal Execution Request" Name="REQ" Type="Event">
+        <With Var="eventType"/>
+        <With Var="consumer"/>
+        <With Var="startDate"/>
+        <With Var="notifyUri"/>
+        <With Var="sources"/>
+        <With Var="endDate"/>
+        <With Var="filterMetadata"/>
+        <With Var="matchMetadata"/>
+      </Event>
+    </EventInputs>
+    <EventOutputs>
+      <Event Comment="Execution Confirmation" Name="CNF" Type="Event">
+        <With Var="eventFilter"/>
+      </Event>
+    </EventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="Event type, similar to topics in MQTT" Name="eventType" Type="WSTRING"/>
+      <VarDeclaration Comment="The Subscriber ArrowheadSystem, that will consume the new events" Name="consumer" Type="ArrowheadSystem"/>
+      <VarDeclaration ArraySize="10" Comment="List of ArrowheadSystem the Subscriber wants to receive events from" Name="sources" Type="ArrowheadSystem"/>
+      <VarDeclaration Comment="If set, the Subscriber wants to receive events with timestamps after this date-time" Name="startDate" Type="DATE_AND_TIME"/>
+      <VarDeclaration Comment="If set, the Subscriber wants to receive events with timestamps before this date-time" Name="endDate" Type="DATE_AND_TIME"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata about the events, which can be used for further filtering in format key=value" Name="filterMetadata" Type="WSTRING"/>
+      <VarDeclaration Comment="The URL subpath where the Event Handler should sent the new events to" Name="notifyUri" Type="WSTRING"/>
+      <VarDeclaration Comment="Should the Event Handler filter events based on the metadata" Name="matchMetadata" Type="BOOL"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration Comment="Created Arrowhead event Filter" Name="eventFilter" Type="EventFilter"/>
+    </OutputVars>
+  </InterfaceList>
+  <BasicFB>
+    <ECC>
+      <ECState Comment="Initial State" Name="START" x="1565.0" y="695.0"/>
+      <ECState Comment="" Name="REQ" x="780.0" y="1215.0">
+        <ECAction Algorithm="REQ" Output="CNF"/>
+      </ECState>
+      <ECTransition Comment="" Condition="1" Destination="START" Source="REQ" x="725.0" y="690.0"/>
+      <ECTransition Comment="" Condition="REQ" Destination="REQ" Source="START" x="1295.0" y="1005.0"/>
+    </ECC>
+    <Algorithm Comment="Initialization algorithm" Name="REQ">
+      <ST Text="VAR&#13;&#10;  i: INT;&#13;&#10;END_VAR;&#13;&#10;&#13;&#10;i := 0;&#13;&#10;eventFilter.eventType := eventType; &#13;&#10;eventFilter.consumer := consumer;&#13;&#10;eventFilter.startDate := startDate;&#13;&#10;eventFilter.endDate := endDate;&#13;&#10;eventFilter.notifyUri := notifyUri;&#13;&#10;eventFilter.matchMetadata := matchMetadata;&#13;&#10;&#13;&#10;WHILE i &lt; 10 DO //looks like while is faster than FOR when exporting to cpp&#13;&#10;  eventFilter.sources[i] := sources[i];&#13;&#10;  eventFilter.filterMetadata[i] :=  filterMetadata[i];&#13;&#10;  i := i + 1;&#13;&#10;END_WHILE"/>
+    </Algorithm>
+  </BasicFB>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/FieldsToPublishEvent.fbt b/data/typelibrary/Arrowhead/EventHandler/FieldsToPublishEvent.fbt
new file mode 100644
index 0000000..abd639d
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/FieldsToPublishEvent.fbt
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Transform individual fields to an Arrowhead Publish Event" Name="FieldsToPublishEvent">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-10-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <EventInputs>
+      <Event Comment="Normal Execution Request" Name="REQ" Type="Event">
+        <With Var="source"/>
+        <With Var="event"/>
+        <With Var="deliveryCompleteUri"/>
+      </Event>
+    </EventInputs>
+    <EventOutputs>
+      <Event Comment="Execution Confirmation" Name="CNF" Type="Event">
+        <With Var="publishEvent"/>
+      </Event>
+    </EventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="ArrowheadSystem publishing the event" Name="source" Type="ArrowheadSystem"/>
+      <VarDeclaration Comment="The published event" Name="event" Type="ArrowheadEvent"/>
+      <VarDeclaration Comment="The URL subpath the Event Handler can use to inform the publisher about the results of the event propagation. If null, the Event Handler will not try to send the results" Name="deliveryCompleteUri" Type="WSTRING"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration Comment="Created publish event" Name="publishEvent" Type="PublishEvent"/>
+    </OutputVars>
+  </InterfaceList>
+  <BasicFB>
+    <ECC>
+      <ECState Comment="Initial State" Name="START" x="1565.0" y="695.0"/>
+      <ECState Comment="" Name="REQ" x="780.0" y="1215.0">
+        <ECAction Algorithm="REQ" Output="CNF"/>
+      </ECState>
+      <ECTransition Comment="" Condition="1" Destination="START" Source="REQ" x="725.0" y="690.0"/>
+      <ECTransition Comment="" Condition="REQ" Destination="REQ" Source="START" x="1315.0" y="1020.0"/>
+    </ECC>
+    <Algorithm Comment="Initialization algorithm" Name="REQ">
+      <ST Text="publishEvent.source := source; &#13;&#10;publishEvent.event := event;&#13;&#10;publishEvent.deliveryCompleteUri := deliveryCompleteUri;&#13;&#10;&#13;&#10;"/>
+    </Algorithm>
+  </BasicFB>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/HTTP/PublishEventHTTP.fbt b/data/typelibrary/Arrowhead/EventHandler/HTTP/PublishEventHTTP.fbt
new file mode 100644
index 0000000..2c4129f
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/HTTP/PublishEventHTTP.fbt
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Publish event using HTTP" Name="PublishEventHTTP">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <Sockets>
+      <AdapterDeclaration Comment="Publish Event adapter" Name="publishEvent" Type="ArrowheadPublishAdp" x="1300.0" y="700.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="4560.0" y="335.0"/>
+    <FB Comment="" Name="InitFlag" Type="E_SR" x="8075.0" y="625.0"/>
+    <FB Comment="" Name="APPEND_STRING_3" Type="APPEND_STRING_3" x="5400.0" y="1000.0">
+      <Parameter Name="IN_1" Value="STRING#http["/>
+      <Parameter Name="IN_3" Value="STRING#/publish; POST; application/json]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="6795.0" y="1025.0"/>
+    <FB Comment="" Name="Query" Type="CLIENT_1_2" x="9700.0" y="610.0"/>
+    <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="8940.0" y="-250.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="Query.REQ" Source="E_PERMIT.EO" dx1="225.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="APPEND_STRING_3.CNF" dx1="285.0"/>
+      <Connection Comment="" Destination="Query.INIT" Source="InitFlag.EO" dx1="295.0"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.REQ" Source="ANYToJSON.CNF" dx1="180.0"/>
+      <Connection Comment="" Destination="InitFlag.S" Source="F_STRING_TO_WSTRING.CNF" dx1="190.0"/>
+      <Connection Comment="" Destination="E_PERMIT.EI" Source="Query.INITO" dx1="60.0" dx2="60.0" dy="-1290.0"/>
+      <Connection Comment="" Destination="InitFlag.R" Source="Query.CNF" dx1="260.0" dx2="150.0" dy="-1650.0"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="publishEvent.publish" dx1="1110.0"/>
+      <Connection Comment="" Destination="publishEvent.published" Source="Query.CNF" dx1="990.0" dx2="60.0" dy="-1930.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="Query.SD_1" Source="ANYToJSON.output" dx1="4045.0"/>
+      <Connection Comment="" Destination="Query.QI" Source="InitFlag.Q" dx1="370.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="APPEND_STRING_3.OUT" dx1="285.0"/>
+      <Connection Comment="" Destination="Query.ID" Source="F_STRING_TO_WSTRING.OUT" dx1="840.0"/>
+      <Connection Comment="" Destination="E_PERMIT.PERMIT" Source="InitFlag.Q" dx1="205.0"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="publishEvent.publishEvent" dx1="1430.0"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.IN_2" Source="publishEvent.endpoint" dx1="1530.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/HTTP/SubscribeEventHTTP.fbt b/data/typelibrary/Arrowhead/EventHandler/HTTP/SubscribeEventHTTP.fbt
new file mode 100644
index 0000000..a2b9192
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/HTTP/SubscribeEventHTTP.fbt
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Subscribe event using HTTP" Name="SubscribeEventHTTP">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-18" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <Sockets>
+      <AdapterDeclaration Comment="SubscribeEvent adapter" Name="SubscribeEventAdp" Type="SubscribeEventAdp" x="1000.0" y="800.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="InitFlagReg" Type="E_SR" x="9495.0" y="-505.0"/>
+    <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="11185.0" y="-900.0"/>
+    <FB Comment="" Name="InitFlagUnReg" Type="E_SR" x="9485.0" y="1200.0"/>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="6685.0" y="-300.0"/>
+    <FB Comment="" Name="CreateRegisterID" Type="APPEND_STRING_3" x="5485.0" y="-300.0">
+      <Parameter Name="IN_1" Value="STRING#http["/>
+      <Parameter Name="IN_3" Value="STRING#/subscription; POST; application/json]"/>
+    </FB>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="8085.0" y="705.0"/>
+    <FB Comment="" Name="E_PERMIT_1" Type="E_PERMIT" x="11185.0" y="900.0"/>
+    <FB Comment="" Name="Register" Type="CLIENT_1_2" x="12200.0" y="-500.0"/>
+    <FB Comment="" Name="Unregister" Type="CLIENT_1_2" x="12175.0" y="1600.0"/>
+    <FB Comment="" Name="CreateRegisterID_1" Type="APPEND_STRING_3" x="5500.0" y="1500.0">
+      <Parameter Name="IN_1" Value="STRING#http["/>
+      <Parameter Name="IN_3" Value="STRING#/subscription; PUT; application/json]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING_2" Type="F_STRING_TO_WSTRING" x="6700.0" y="1500.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="E_PERMIT.EI" Source="Register.INITO" dx1="60.0" dx2="60.0" dy="-720.0"/>
+      <Connection Comment="" Destination="InitFlagReg.R" Source="Register.CNF" dx1="325.0" dx2="265.0" dy="-975.0"/>
+      <Connection Comment="" Destination="Register.INIT" Source="InitFlagReg.EO" dx1="1160.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="CreateRegisterID.CNF"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING.CNF" dx1="265.0"/>
+      <Connection Comment="" Destination="Register.REQ" Source="E_PERMIT.EO" dx1="290.0"/>
+      <Connection Comment="" Destination="InitFlagReg.S" Source="F_STRING_TO_WSTRING.CNF" dx1="955.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.REQ" Source="SubscribeEventAdp.Subscribe" dx1="975.0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.Subscribed" Source="Register.CNF" dx1="540.0" dx2="60.0" dy="-1415.0"/>
+      <Connection Comment="" Destination="Unregister.INIT" Source="InitFlagUnReg.EO" dx1="1085.0"/>
+      <Connection Comment="" Destination="Unregister.REQ" Source="E_PERMIT_1.EO" dx1="290.0"/>
+      <Connection Comment="" Destination="E_PERMIT_1.EI" Source="Unregister.INITO" dx1="60.0" dx2="60.0" dy="-1155.0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.Unsubscribed" Source="Unregister.CNF" dx1="680.0" dx2="60.0" dy="4405.0"/>
+      <Connection Comment="" Destination="InitFlagUnReg.R" Source="Unregister.CNF" dx1="350.0" dx2="290.0" dy="-1435.0"/>
+      <Connection Comment="" Destination="CreateRegisterID_1.REQ" Source="SubscribeEventAdp.Unsubscribe" dx1="385.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_2.REQ" Source="CreateRegisterID_1.CNF"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING_2.CNF" dx1="355.0"/>
+      <Connection Comment="" Destination="InitFlagUnReg.S" Source="F_STRING_TO_WSTRING_2.CNF" dx1="1260.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="E_PERMIT_1.PERMIT" Source="InitFlagUnReg.Q" dx1="720.0"/>
+      <Connection Comment="" Destination="Register.QI" Source="InitFlagReg.Q" dx1="1160.0"/>
+      <Connection Comment="" Destination="Register.SD_1" Source="ANYToJSON.output" dx1="2355.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="CreateRegisterID.OUT"/>
+      <Connection Comment="" Destination="Register.ID" Source="F_STRING_TO_WSTRING.OUT"/>
+      <Connection Comment="" Destination="E_PERMIT.PERMIT" Source="InitFlagReg.Q" dx1="790.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.IN_2" Source="SubscribeEventAdp.endpoint" dx1="1675.0"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="SubscribeEventAdp.eventFilter" dx1="2975.0"/>
+      <Connection Comment="" Destination="Unregister.QI" Source="InitFlagUnReg.Q" dx1="725.0"/>
+      <Connection Comment="" Destination="CreateRegisterID_1.IN_2" Source="SubscribeEventAdp.endpoint" dx1="1335.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_2.IN" Source="CreateRegisterID_1.OUT"/>
+      <Connection Comment="" Destination="Unregister.ID" Source="F_STRING_TO_WSTRING_2.OUT" dx1="2605.0"/>
+      <Connection Comment="" Destination="Unregister.SD_1" Source="ANYToJSON.output" dx1="1750.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/OpcUa/PublishEventOpcUa.fbt b/data/typelibrary/Arrowhead/EventHandler/OpcUa/PublishEventOpcUa.fbt
new file mode 100644
index 0000000..03677ff
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/OpcUa/PublishEventOpcUa.fbt
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Publish event using OPC UA" Name="PublishEventOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <Sockets>
+      <AdapterDeclaration Comment="Publish Event adapter" Name="publishEvent" Type="ArrowheadPublishAdp" x="1300.0" y="700.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="4560.0" y="335.0"/>
+    <FB Comment="" Name="InitFlag" Type="E_SR" x="8075.0" y="625.0"/>
+    <FB Comment="" Name="APPEND_STRING_3" Type="APPEND_STRING_3" x="5400.0" y="1000.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua[CALL_METHOD; "/>
+      <Parameter Name="IN_3" Value="STRING##; /Objects/2:EventHandler/2:publish]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="6795.0" y="1025.0"/>
+    <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="8700.0" y="-200.0"/>
+    <FB Comment="" Name="E_SWITCH_2" Type="E_SWITCH" x="11100.0" y="800.0"/>
+    <FB Comment="" Name="E_SWITCH_1_1" Type="E_SWITCH" x="13000.0" y="700.0"/>
+    <FB Comment="" Name="E_CTU_1" Type="E_CTU" x="12200.0" y="800.0">
+      <Parameter Name="PV" Value="UINT#3"/>
+    </FB>
+    <FB Comment="" Name="E_DELAY_1" Type="E_DELAY" x="14600.0" y="700.0">
+      <Parameter Name="DT" Value="T#250ms"/>
+    </FB>
+    <FB Comment="" Name="Query" Type="CLIENT_1_0" x="9700.0" y="610.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="APPEND_STRING_3.CNF" dx1="285.0"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.REQ" Source="ANYToJSON.CNF" dx1="180.0"/>
+      <Connection Comment="" Destination="InitFlag.S" Source="F_STRING_TO_WSTRING.CNF" dx1="190.0"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="publishEvent.publish" dx1="1110.0"/>
+      <Connection Comment="" Destination="E_CTU_1.R" Source="E_SWITCH_2.EO1"/>
+      <Connection Comment="" Destination="E_CTU_1.R" Source="E_SWITCH_1_1.EO1" dx1="60.0" dx2="60.0" dy="-505.0"/>
+      <Connection Comment="" Destination="E_CTU_1.CU" Source="E_SWITCH_2.EO0"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1.EI" Source="E_CTU_1.CUO" dx1="230.0"/>
+      <Connection Comment="" Destination="E_DELAY_1.START" Source="E_SWITCH_1_1.EO0"/>
+      <Connection Comment="" Destination="publishEvent.published" Source="E_SWITCH_2.EO1" dx1="445.0" dx2="60.0" dy="-1930.0"/>
+      <Connection Comment="" Destination="InitFlag.R" Source="E_SWITCH_2.EO1" dx1="260.0" dx2="150.0" dy="-1650.0"/>
+      <Connection Comment="" Destination="Query.INIT" Source="InitFlag.EO" dx1="295.0"/>
+      <Connection Comment="" Destination="Query.REQ" Source="E_PERMIT.EO" dx1="225.0"/>
+      <Connection Comment="" Destination="Query.REQ" Source="E_DELAY_1.EO" dx1="60.0" dx2="60.0" dy="-1010.0"/>
+      <Connection Comment="" Destination="E_PERMIT.EI" Source="Query.INITO" dx1="60.0" dx2="60.0" dy="-1290.0"/>
+      <Connection Comment="" Destination="E_SWITCH_2.EI" Source="Query.CNF" dx1="420.0"/>
+      <Connection Comment="" Destination="InitFlag.R" Source="E_SWITCH_1_1.EO1" dx1="60.0" dx2="60.0" dy="785.0"/>
+      <Connection Comment="" Destination="publishEvent.published" Source="E_SWITCH_1_1.EO1" dx1="60.0" dx2="600.0" dy="1580.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="APPEND_STRING_3.OUT" dx1="285.0"/>
+      <Connection Comment="" Destination="E_PERMIT.PERMIT" Source="InitFlag.Q" dx1="205.0"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="publishEvent.publishEvent" dx1="1430.0"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.IN_2" Source="publishEvent.endpoint" dx1="1530.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1.G" Source="E_CTU_1.Q" dx1="230.0"/>
+      <Connection Comment="" Destination="Query.QI" Source="InitFlag.Q" dx1="370.0"/>
+      <Connection Comment="" Destination="Query.ID" Source="F_STRING_TO_WSTRING.OUT" dx1="840.0"/>
+      <Connection Comment="" Destination="Query.SD_1" Source="ANYToJSON.output" dx1="4045.0"/>
+      <Connection Comment="" Destination="E_SWITCH_2.G" Source="Query.QO" dx1="420.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/OpcUa/SubscribeEventOpcUa.fbt b/data/typelibrary/Arrowhead/EventHandler/OpcUa/SubscribeEventOpcUa.fbt
new file mode 100644
index 0000000..f0cf782
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/OpcUa/SubscribeEventOpcUa.fbt
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Subscribe event using OPC UA" Name="SubscribeEventOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-18" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <Sockets>
+      <AdapterDeclaration Comment="SubscribeEvent adapter" Name="SubscribeEventAdp" Type="SubscribeEventAdp" x="1000.0" y="800.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="InitFlagReg" Type="E_SR" x="9495.0" y="-505.0"/>
+    <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="11185.0" y="-900.0"/>
+    <FB Comment="" Name="InitFlagUnReg" Type="E_SR" x="9485.0" y="1200.0"/>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="6685.0" y="-300.0"/>
+    <FB Comment="" Name="CreateRegisterID" Type="APPEND_STRING_3" x="5485.0" y="-300.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua[CALL_METHOD; "/>
+      <Parameter Name="IN_3" Value="STRING##; /Objects/2:EventHandler/2:subscribe]"/>
+    </FB>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="8085.0" y="705.0"/>
+    <FB Comment="" Name="E_PERMIT_1" Type="E_PERMIT" x="11185.0" y="900.0"/>
+    <FB Comment="" Name="CreateRegisterID_1" Type="APPEND_STRING_3" x="5500.0" y="1500.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua[CALL_METHOD; "/>
+      <Parameter Name="IN_3" Value="STRING##; /Objects/2:EventHandler/2:unsubscribe]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING_2" Type="F_STRING_TO_WSTRING" x="6700.0" y="1500.0"/>
+    <FB Comment="" Name="Register" Type="CLIENT_1_0" x="12200.0" y="-500.0"/>
+    <FB Comment="" Name="Unregister" Type="CLIENT_1_0" x="12175.0" y="1600.0"/>
+    <FB Comment="" Name="E_DELAY_1" Type="E_DELAY" x="17000.0" y="1600.0">
+      <Parameter Name="DT" Value="T#250ms"/>
+    </FB>
+    <FB Comment="" Name="E_SWITCH_1_1" Type="E_SWITCH" x="15400.0" y="1600.0"/>
+    <FB Comment="" Name="E_SWITCH_2" Type="E_SWITCH" x="13500.0" y="1700.0"/>
+    <FB Comment="" Name="E_CTU_1" Type="E_CTU" x="14600.0" y="1600.0">
+      <Parameter Name="PV" Value="UINT#3"/>
+    </FB>
+    <FB Comment="" Name="E_DELAY_1_1" Type="E_DELAY" x="17200.0" y="-800.0">
+      <Parameter Name="DT" Value="T#250ms"/>
+    </FB>
+    <FB Comment="" Name="E_SWITCH_1_1_1" Type="E_SWITCH" x="15600.0" y="-800.0"/>
+    <FB Comment="" Name="E_SWITCH_2_1" Type="E_SWITCH" x="13700.0" y="-700.0"/>
+    <FB Comment="" Name="E_CTU_1_1" Type="E_CTU" x="14800.0" y="-800.0">
+      <Parameter Name="PV" Value="UINT#3"/>
+    </FB>
+    <EventConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="CreateRegisterID.CNF"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING.CNF" dx1="265.0"/>
+      <Connection Comment="" Destination="InitFlagReg.S" Source="F_STRING_TO_WSTRING.CNF" dx1="955.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.REQ" Source="SubscribeEventAdp.Subscribe" dx1="975.0"/>
+      <Connection Comment="" Destination="CreateRegisterID_1.REQ" Source="SubscribeEventAdp.Unsubscribe" dx1="385.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_2.REQ" Source="CreateRegisterID_1.CNF"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING_2.CNF" dx1="350.0"/>
+      <Connection Comment="" Destination="InitFlagUnReg.S" Source="F_STRING_TO_WSTRING_2.CNF" dx1="1260.0"/>
+      <Connection Comment="" Destination="Register.INIT" Source="InitFlagReg.EO" dx1="1110.0"/>
+      <Connection Comment="" Destination="Register.REQ" Source="E_PERMIT.EO" dx1="290.0"/>
+      <Connection Comment="" Destination="E_PERMIT.EI" Source="Register.INITO" dx1="60.0" dx2="60.0" dy="-720.0"/>
+      <Connection Comment="" Destination="Unregister.INIT" Source="InitFlagUnReg.EO" dx1="1085.0"/>
+      <Connection Comment="" Destination="Unregister.REQ" Source="E_PERMIT_1.EO" dx1="290.0"/>
+      <Connection Comment="" Destination="E_PERMIT_1.EI" Source="Unregister.INITO" dx1="60.0" dx2="60.0" dy="-1070.0"/>
+      <Connection Comment="" Destination="E_CTU_1.R" Source="E_SWITCH_2.EO1" dx1="310.0"/>
+      <Connection Comment="" Destination="E_CTU_1.R" Source="E_SWITCH_1_1.EO1" dx1="60.0" dx2="60.0" dy="-505.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1.EI" Source="E_CTU_1.CUO"/>
+      <Connection Comment="" Destination="E_CTU_1.CU" Source="E_SWITCH_2.EO0" dx1="310.0"/>
+      <Connection Comment="" Destination="E_DELAY_1.START" Source="E_SWITCH_1_1.EO0"/>
+      <Connection Comment="" Destination="E_CTU_1_1.R" Source="E_SWITCH_2_1.EO1" dx1="310.0"/>
+      <Connection Comment="" Destination="E_CTU_1_1.R" Source="E_SWITCH_1_1_1.EO1" dx1="60.0" dx2="60.0" dy="-505.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1_1.EI" Source="E_CTU_1_1.CUO"/>
+      <Connection Comment="" Destination="E_CTU_1_1.CU" Source="E_SWITCH_2_1.EO0" dx1="310.0"/>
+      <Connection Comment="" Destination="E_DELAY_1_1.START" Source="E_SWITCH_1_1_1.EO0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.Unsubscribed" Source="E_SWITCH_2.EO1" dx1="60.0" dx2="60.0" dy="1790.0"/>
+      <Connection Comment="" Destination="InitFlagUnReg.R" Source="E_SWITCH_2.EO1" dx1="60.0" dx2="60.0" dy="-1520.0"/>
+      <Connection Comment="" Destination="E_SWITCH_2.EI" Source="Unregister.CNF"/>
+      <Connection Comment="" Destination="Unregister.REQ" Source="E_DELAY_1.EO" dx1="60.0" dx2="60.0" dy="-940.0"/>
+      <Connection Comment="" Destination="InitFlagUnReg.R" Source="E_SWITCH_1_1.EO1" dx1="60.0" dx2="60.0" dy="640.0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.Unsubscribed" Source="E_SWITCH_1_1.EO1" dx1="185.0" dx2="620.0" dy="3460.0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.Subscribed" Source="E_SWITCH_2_1.EO1" dx1="115.0" dx2="60.0" dy="-1415.0"/>
+      <Connection Comment="" Destination="InitFlagReg.R" Source="E_SWITCH_2_1.EO1" dx1="225.0" dx2="265.0" dy="-975.0"/>
+      <Connection Comment="" Destination="E_SWITCH_2_1.EI" Source="Register.CNF" dx1="470.0"/>
+      <Connection Comment="" Destination="Register.REQ" Source="E_DELAY_1_1.EO" dx1="60.0" dx2="60.0" dy="-635.0"/>
+      <Connection Comment="" Destination="InitFlagReg.R" Source="E_SWITCH_1_1_1.EO1" dx1="60.0" dx2="60.0" dy="-650.0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.Subscribed" Source="E_SWITCH_1_1_1.EO1" dx1="60.0" dx2="170.0" dy="750.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="E_PERMIT_1.PERMIT" Source="InitFlagUnReg.Q" dx1="720.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="CreateRegisterID.OUT"/>
+      <Connection Comment="" Destination="E_PERMIT.PERMIT" Source="InitFlagReg.Q" dx1="790.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.IN_2" Source="SubscribeEventAdp.endpoint" dx1="1675.0"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="SubscribeEventAdp.eventFilter" dx1="2975.0"/>
+      <Connection Comment="" Destination="CreateRegisterID_1.IN_2" Source="SubscribeEventAdp.endpoint" dx1="1335.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_2.IN" Source="CreateRegisterID_1.OUT"/>
+      <Connection Comment="" Destination="Register.QI" Source="InitFlagReg.Q" dx1="1110.0"/>
+      <Connection Comment="" Destination="Register.ID" Source="F_STRING_TO_WSTRING.OUT"/>
+      <Connection Comment="" Destination="Register.SD_1" Source="ANYToJSON.output" dx1="2355.0"/>
+      <Connection Comment="" Destination="Unregister.QI" Source="InitFlagUnReg.Q" dx1="725.0"/>
+      <Connection Comment="" Destination="Unregister.ID" Source="F_STRING_TO_WSTRING_2.OUT" dx1="2605.0"/>
+      <Connection Comment="" Destination="Unregister.SD_1" Source="ANYToJSON.output" dx1="1750.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1.G" Source="E_CTU_1.Q"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1_1.G" Source="E_CTU_1_1.Q"/>
+      <Connection Comment="" Destination="E_SWITCH_2.G" Source="Unregister.QO" dx1="380.0"/>
+      <Connection Comment="" Destination="E_SWITCH_2_1.G" Source="Register.QO" dx1="470.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/PublishEvent.dtp b/data/typelibrary/Arrowhead/EventHandler/PublishEvent.dtp
new file mode 100644
index 0000000..d100a2d
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/PublishEvent.dtp
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
+<DataType Name="PublishEvent" Comment="Publish event type to be sent to the EventHandler" >
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2019-09-17" />
+  <ASN1Tag Class="APPLICATION" Number="1" />
+  <StructuredType >
+    <VarDeclaration Name="source" Type="ArrowheadSystem" Comment="ArrowheadSystem publishing the event." />
+    <VarDeclaration Name="event" Type="ArrowheadEvent" Comment="The published event." />
+    <VarDeclaration Name="deliveryCompleteUri" Type="WSTRING" Comment="The URL subpath the Event Handler can use to inform the publisher about the results of the event propagation. If null, the Event Handler will not try to send the results." />
+  </StructuredType>
+</DataType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/SubscribeEvent.fbt b/data/typelibrary/Arrowhead/EventHandler/SubscribeEvent.fbt
new file mode 100644
index 0000000..87aec50
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/SubscribeEvent.fbt
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Subscribe Event Function Block" Name="SubscribeEvent">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-18" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <EventInputs>
+      <Event Comment="Initialization Request" Name="Subscribe" Type="Event">
+        <With Var="eventFilter"/>
+        <With Var="endpoint"/>
+      </Event>
+      <Event Comment="Normal Execution Request" Name="Unsubscribe" Type="Event">
+        <With Var="eventFilter"/>
+        <With Var="endpoint"/>
+      </Event>
+    </EventInputs>
+    <EventOutputs>
+      <Event Comment="Subscribe finished" Name="Subscribed" Type="Event"/>
+      <Event Comment="Unsubscribe from event" Name="Unsubscribed" Type="Event"/>
+    </EventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="Event filter " Name="eventFilter" Type="EventFilter"/>
+      <VarDeclaration Comment="Endpoint (IP:PORT/URI) of the Service Registry (not officially in the documentation, but it simplifies the FBs)" Name="endpoint" Type="WSTRING"/>
+    </InputVars>
+    <Plugs>
+      <AdapterDeclaration Comment="Subscribe event adapter" Name="SubscribeEventAdp" Type="SubscribeEventAdp" x="3000.0" y="-100.0"/>
+    </Plugs>
+  </InterfaceList>
+  <FBNetwork>
+    <EventConnections>
+      <Connection Comment="" Destination="SubscribeEventAdp.Unsubscribe" Source="Unsubscribe" dx1="1230.0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.Subscribe" Source="Subscribe" dx1="1230.0"/>
+      <Connection Comment="" Destination="Subscribed" Source="SubscribeEventAdp.Subscribed" dx1="60.0" dx2="60.0" dy="5.0"/>
+      <Connection Comment="" Destination="Unsubscribed" Source="SubscribeEventAdp.Unsubscribed" dx1="60.0" dx2="60.0" dy="5.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="SubscribeEventAdp.eventFilter" Source="eventFilter" dx1="1230.0"/>
+      <Connection Comment="" Destination="SubscribeEventAdp.endpoint" Source="endpoint" dx1="1230.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/EventHandler/SubscribeEventAdp.adp b/data/typelibrary/Arrowhead/EventHandler/SubscribeEventAdp.adp
new file mode 100644
index 0000000..0eadd7f
--- /dev/null
+++ b/data/typelibrary/Arrowhead/EventHandler/SubscribeEventAdp.adp
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE AdapterType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<AdapterType Comment="Subscribe event adapter" Name="SubscribeEventAdp">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Cabral" Date="2019-09-18" Organization="fortiss GmbH" Version="1.0"/>
+  <CompilerInfo header="package fb.test;"/>
+  <InterfaceList>
+    <EventInputs>
+      <Event Comment="Subscribe finished" Name="Subscribed" Type="Event"/>
+      <Event Comment="Unsubscribe finished" Name="Unsubscribed" Type="Event"/>
+    </EventInputs>
+    <EventOutputs>
+      <Event Comment="Subscribe to event" Name="Subscribe" Type="Event">
+        <With Var="eventFilter"/>
+        <With Var="endpoint"/>
+      </Event>
+      <Event Comment="Unsubscribe from event" Name="Unsubscribe" Type="Event">
+        <With Var="endpoint"/>
+        <With Var="eventFilter"/>
+      </Event>
+    </EventOutputs>
+    <OutputVars>
+      <VarDeclaration Comment="Event filter " Name="eventFilter" Type="EventFilter"/>
+      <VarDeclaration Comment="Endpoint (IP:PORT/URI) of the Service Registry (not officially in the documentation, but it simplifies the FBs)" Name="endpoint" Type="WSTRING"/>
+    </OutputVars>
+  </InterfaceList>
+  <Service Comment="Subscribe event adapter" LeftInterface="SOCKET" RightInterface="PLUG">
+    <ServiceSequence Comment="" Name="request_confirm">
+      <ServiceTransaction>
+        <InputPrimitive Event="REQ" Interface="SOCKET" Parameters="REQD"/>
+        <OutputPrimitive Event="REQ" Interface="PLUG" Parameters="REQD"/>
+      </ServiceTransaction>
+      <ServiceTransaction>
+        <InputPrimitive Event="CNF" Interface="PLUG" Parameters="CNFD"/>
+        <OutputPrimitive Event="CNF" Interface="SOCKET" Parameters="CNFD"/>
+      </ServiceTransaction>
+    </ServiceSequence>
+    <ServiceSequence Comment="" Name="indication_response">
+      <ServiceTransaction>
+        <InputPrimitive Event="IND" Interface="PLUG" Parameters="INDD"/>
+        <OutputPrimitive Event="IND" Interface="SOCKET" Parameters="INDD"/>
+      </ServiceTransaction>
+      <ServiceTransaction>
+        <InputPrimitive Event="RSP" Interface="SOCKET" Parameters="RSPD"/>
+        <OutputPrimitive Event="RSP" Interface="PLUG" Parameters="RSPD"/>
+      </ServiceTransaction>
+    </ServiceSequence>
+  </Service>
+</AdapterType>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPFull.sub b/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPFull.sub
index 9cd3749..b9a2a22 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPFull.sub
+++ b/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPFull.sub
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Get the endpoint at INDEX from a request orchestration response" Name="GetEndpointFromOrchestrationHTTPPFull">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-02-19" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPartial.sub b/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPartial.sub
index 326e20f..a7cbd03 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPartial.sub
+++ b/data/typelibrary/Arrowhead/Orchestrator/HTTP/GetEndpointFromOrchestrationHTTPPartial.sub
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Get the endpoint at INDEX from a request orchestration response" Name="GetEndpointFromOrchestrationHTTPPartial">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-02-19" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTP.fbt b/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTP.fbt
index a643dcb..903dd24 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTP.fbt
+++ b/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTP.fbt
@@ -18,7 +18,7 @@
     <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="8065.0" y="1250.0"/>
     <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="6010.0" y="1875.0"/>
     <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="3755.0" y="1475.0"/>
-    <FB Comment="" Name="GetHTTPOrchestrationForm" Type="GetArrayResponseFromHTTP" x="-400.0" y="1500.0"/>
+    <FB Comment="" Name="GetHTTPOrchestrationForm" Type="GetArrayResponseFromJSON" x="-400.0" y="1500.0"/>
     <DataConnections>
       <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="APPEND_STRING_3.OUT" dx1="155.0"/>
       <Connection Comment="" Destination="Request.ID" Source="F_STRING_TO_WSTRING.OUT" dx1="1055.0"/>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPFull.sub b/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPFull.sub
index 1d35e47..e08de22 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPFull.sub
+++ b/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPFull.sub
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Request Orchestration using HTTP with all fields from services, system and cloud to be set" Name="RequestOrchestrationHTTPPFull">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-02-19" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPartial.sub b/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPartial.sub
index e31e3e6..1201121 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPartial.sub
+++ b/data/typelibrary/Arrowhead/Orchestrator/HTTP/RequestOrchestrationHTTPPartial.sub
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Request Orchestration using HTTP with all fields from services to be set" Name="RequestOrchestrationHTTPPartial">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-02-19" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/OpcUa/GetEndpointFromOrchestrationOpcUaFull.sub b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/GetEndpointFromOrchestrationOpcUaFull.sub
new file mode 100644
index 0000000..c590899
--- /dev/null
+++ b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/GetEndpointFromOrchestrationOpcUaFull.sub
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Get the endpoint at INDEX from a request orchestration response" Name="GetEndpointFromOrchestrationOpcUaFull">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Request orchestration" Name="REQ" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Request finished" Name="CNF" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="Identification of the system" Name="systemName" Type="WSTRING"/>
+      <VarDeclaration Comment="Address of the offered services" Name="address" Type="WSTRING"/>
+      <VarDeclaration Comment="Port of the of the offered services" Name="port" Type="DINT"/>
+      <VarDeclaration Comment="Authentication info of the system" Name="authenticationInfo" Type="WSTRING"/>
+      <VarDeclaration Comment="Company (the capital  O is to avoid clash when exporting to C++)" Name="Operator" Type="WSTRING"/>
+      <VarDeclaration Comment="Identification of the cloud" Name="cloudName" Type="WSTRING"/>
+      <VarDeclaration Comment="Address to access the cloud" Name="addressCloud" Type="WSTRING"/>
+      <VarDeclaration Comment="Port to access the cloud" Name="portCloud" Type="DINT"/>
+      <VarDeclaration Comment="(Unclear documentation)" Name="gatekeeperServiceURI" Type="WSTRING"/>
+      <VarDeclaration Comment="Authentication info of the cloud" Name="authenticationInfoCloud" Type="WSTRING"/>
+      <VarDeclaration Comment="(Unclear documentation)" Name="secure" Type="BOOL"/>
+      <VarDeclaration Comment="Identification of the service" InitialValue="" Name="serviceDefinition" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Interfaces implemented by the service" InitialValue="" Name="interfaces" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata of the service in key=value format" Name="serviceMetadata" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="These flags can be set to tailor the orchestration process (use just the names of the flags to be enabled)" Name="orchestrationFlags" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="There can be a list from the Consumer stating which other Application Systems (even from other Clouds) it wishes to connect. If this field is filled out, the Orchestrator will try to facilitate these preferences" Name="preferredProviders" Type="PreferredProvider"/>
+      <VarDeclaration ArraySize="10" Comment="This object will be presenting the Consumer’s selected QoS level. Not implemented" Name="requestedQoS" Type="WSTRING"/>
+      <VarDeclaration Comment="Enpoint of the orchestrator" Name="orchestratorEndpoint" Type="WSTRING"/>
+      <VarDeclaration Comment="Position in the array of the requested forms" Name="INDEX" Type="UINT"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration Comment="Endpoint at position INDEX from orchestration forms" Name="endpoint" Type="WSTRING"/>
+    </OutputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="GET_AT_INDEX" Type="GET_AT_INDEX" x="7530.0" y="280.0"/>
+    <SubApp Comment="" Name="GetEndpointFromOrchestrationForm" Type="GetEndpointFromOrchestrationForm" x="8710.0" y="380.0"/>
+    <SubApp Comment="" Name="RequestOrchestrationOpcUaFull" Type="RequestOrchestrationOpcUaFull" x="3330.0" y="-260.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="GetEndpointFromOrchestrationForm.REQ" Source="GET_AT_INDEX.CNF" dx1="295.0"/>
+      <Connection Comment="" Destination="CNF" Source="GetEndpointFromOrchestrationForm.CNF" dx1="60.0" dx2="60.0" dy="-230.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.REQ" Source="REQ" dx1="1240.0"/>
+      <Connection Comment="" Destination="GET_AT_INDEX.REQ" Source="RequestOrchestrationOpcUaFull.CNF" dx1="2200.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="GetEndpointFromOrchestrationForm.orchestrationForm" Source="GET_AT_INDEX.OUT"/>
+      <Connection Comment="" Destination="GET_AT_INDEX.INDEX" Source="INDEX" dx1="6390.0"/>
+      <Connection Comment="" Destination="endpoint" Source="GetEndpointFromOrchestrationForm.endpoint" dx1="60.0" dx2="60.0" dy="-305.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.systemName" Source="systemName" dx1="660.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.address" Source="address" dx1="2190.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.port" Source="port" dx1="885.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.authenticationInfo" Source="authenticationInfo" dx1="990.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.Operator" Source="Operator" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.cloudName" Source="cloudName" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.addressCloud" Source="addressCloud" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.portCloud" Source="portCloud" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.gatekeeperServiceURI" Source="gatekeeperServiceURI" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.authenticationInfoCloud" Source="authenticationInfoCloud" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.secure" Source="secure" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.serviceDefinition" Source="serviceDefinition" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.interfaces" Source="interfaces" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.serviceMetadata" Source="serviceMetadata" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.orchestrationFlags" Source="orchestrationFlags" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.preferredProviders" Source="preferredProviders" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.requestedQoS" Source="requestedQoS" dx1="1240.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaFull.orchestratorEndpoint" Source="orchestratorEndpoint" dx1="1240.0"/>
+      <Connection Comment="" Destination="GET_AT_INDEX.IN_ARRAY" Source="RequestOrchestrationOpcUaFull.serviceRequestForm" dx1="2200.0"/>
+    </DataConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/OpcUa/GetEndpointFromOrchestrationOpcUaPartial.sub b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/GetEndpointFromOrchestrationOpcUaPartial.sub
new file mode 100644
index 0000000..7118e5c
--- /dev/null
+++ b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/GetEndpointFromOrchestrationOpcUaPartial.sub
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Get the endpoint at INDEX from a request orchestration response" Name="GetEndpointFromOrchestrationOpcUaPartial">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Request orchestration" Name="REQ" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Request finished" Name="CNF" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="The ArrowheadSystem identifier that is requesting the orchestration" Name="requesterSystem" Type="ArrowheadSystem"/>
+      <VarDeclaration Comment="Not to be used by Application Systems. This field is only used when there is an inbound request from another Cloud. This can only be submitted by the Gatekeeper" Name="requesterCloud" Type="ArrowheadCloud"/>
+      <VarDeclaration Comment="Identification of the service" InitialValue="" Name="serviceDefinition" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Interfaces implemented by the service" InitialValue="" Name="interfaces" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata of the service in key=value format" Name="serviceMetadata" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="These flags can be set to tailor the orchestration process (use just the names of the flags to be enabled)" Name="orchestrationFlags" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="There can be a list from the Consumer stating which other Application Systems (even from other Clouds) it wishes to connect. If this field is filled out, the Orchestrator will try to facilitate these preferences" Name="preferredProviders" Type="PreferredProvider"/>
+      <VarDeclaration ArraySize="10" Comment="This object will be presenting the Consumer’s selected QoS level. Not implemented" Name="requestedQoS" Type="WSTRING"/>
+      <VarDeclaration Comment="Enpoint of the orchestrator" Name="orchestratorEndpoint" Type="WSTRING"/>
+      <VarDeclaration Comment="Position in the array of the requested forms" Name="INDEX" Type="UINT"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration Comment="Endpoint at position INDEX from orchestration forms" Name="endpoint" Type="WSTRING"/>
+    </OutputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="GET_AT_INDEX" Type="GET_AT_INDEX" x="5255.0" y="850.0"/>
+    <SubApp Comment="" Name="GetEndpointFromOrchestrationForm" Type="GetEndpointFromOrchestrationForm" x="6445.0" y="945.0"/>
+    <SubApp Comment="" Name="RequestOrchestrationOpcUaPartial" Type="RequestOrchestrationOpcUaPartial" x="2430.0" y="-260.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="GetEndpointFromOrchestrationForm.REQ" Source="GET_AT_INDEX.CNF" dx1="190.0"/>
+      <Connection Comment="" Destination="CNF" Source="GetEndpointFromOrchestrationForm.CNF" dx1="60.0" dx2="60.0" dy="-515.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.REQ" Source="REQ" dx1="840.0"/>
+      <Connection Comment="" Destination="GET_AT_INDEX.REQ" Source="RequestOrchestrationOpcUaPartial.CNF" dx1="800.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="GetEndpointFromOrchestrationForm.orchestrationForm" Source="GET_AT_INDEX.OUT" dx1="190.0"/>
+      <Connection Comment="" Destination="endpoint" Source="GetEndpointFromOrchestrationForm.endpoint" dx1="60.0" dx2="60.0" dy="-590.0"/>
+      <Connection Comment="" Destination="GET_AT_INDEX.INDEX" Source="INDEX" dx1="1415.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.requesterSystem" Source="requesterSystem" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.requesterCloud" Source="requesterCloud" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.serviceDefinition" Source="serviceDefinition" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.interfaces" Source="interfaces" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.serviceMetadata" Source="serviceMetadata" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.orchestrationFlags" Source="orchestrationFlags" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.preferredProviders" Source="preferredProviders" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.requestedQoS" Source="requestedQoS" dx1="840.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.orchestratorEndpoint" Source="orchestratorEndpoint" dx1="840.0"/>
+      <Connection Comment="" Destination="GET_AT_INDEX.IN_ARRAY" Source="RequestOrchestrationOpcUaPartial.serviceRequestForm" dx1="680.0"/>
+    </DataConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUa.fbt b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUa.fbt
new file mode 100644
index 0000000..8ba422d
--- /dev/null
+++ b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUa.fbt
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Request Orchestration Function Block using OPC UA" Name="RequestOrchestrationOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <Sockets>
+      <AdapterDeclaration Comment="Request orchestration adapter" Name="requestOrchestration" Type="OrchestratorRequestAdp" x="1000.0" y="1500.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="APPEND_STRING_3" Type="APPEND_STRING_3" x="4975.0" y="1830.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua[CALL_METHOD; "/>
+      <Parameter Name="IN_3" Value="STRING##; /Objects/2:Orchestrator/2:orchestration]"/>
+    </FB>
+    <FB Comment="" Name="InitFlag" Type="E_SR" x="7445.0" y="1665.0"/>
+    <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="8065.0" y="1250.0"/>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="6010.0" y="1875.0"/>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="3755.0" y="1475.0"/>
+    <FB Comment="" Name="GetHTTPOrchestrationForm" Type="GetArrayResponseFromJSON" x="-400.0" y="1500.0"/>
+    <FB Comment="" Name="Request" Type="CLIENT_1" x="9240.0" y="1905.0"/>
+    <FB Comment="" Name="E_SWITCH" Type="E_SWITCH" x="11100.0" y="1900.0"/>
+    <FB Comment="" Name="E_SWITCH_1" Type="E_SWITCH" x="13000.0" y="1800.0"/>
+    <FB Comment="" Name="E_CTU" Type="E_CTU" x="12200.0" y="1800.0">
+      <Parameter Name="PV" Value="UINT#3"/>
+    </FB>
+    <FB Comment="" Name="E_DELAY" Type="E_DELAY" x="14600.0" y="1800.0">
+      <Parameter Name="DT" Value="T#250ms"/>
+    </FB>
+    <EventConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="APPEND_STRING_3.CNF" dx1="155.0"/>
+      <Connection Comment="" Destination="InitFlag.S" Source="F_STRING_TO_WSTRING.CNF" dx1="305.0"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.REQ" Source="ANYToJSON.CNF" dx1="245.0"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="requestOrchestration.requestOrchestator" dx1="840.0"/>
+      <Connection Comment="" Destination="requestOrchestration.responseReceived" Source="GetHTTPOrchestrationForm.CNF"/>
+      <Connection Comment="" Destination="Request.INIT" Source="InitFlag.EO" dx1="620.0"/>
+      <Connection Comment="" Destination="Request.REQ" Source="E_PERMIT.EO" dx1="240.0"/>
+      <Connection Comment="" Destination="E_PERMIT.EI" Source="Request.INITO" dx1="60.0" dx2="60.0" dy="-1150.0"/>
+      <Connection Comment="" Destination="GetHTTPOrchestrationForm.REQ" Source="E_SWITCH.EO1" dx1="445.0" dx2="60.0" dy="-1945.0"/>
+      <Connection Comment="" Destination="InitFlag.R" Source="E_SWITCH.EO1" dx1="240.0" dx2="60.0" dy="-1605.0"/>
+      <Connection Comment="" Destination="E_SWITCH.EI" Source="Request.CNF" dx1="655.0"/>
+      <Connection Comment="" Destination="E_CTU.CU" Source="E_SWITCH.EO0" dx1="310.0"/>
+      <Connection Comment="" Destination="Request.REQ" Source="E_DELAY.EO" dx1="60.0" dx2="60.0" dy="-685.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1.EI" Source="E_CTU.CUO"/>
+      <Connection Comment="" Destination="E_DELAY.START" Source="E_SWITCH_1.EO0"/>
+      <Connection Comment="" Destination="InitFlag.R" Source="E_SWITCH_1.EO1" dx1="60.0" dx2="60.0" dy="1490.0"/>
+      <Connection Comment="" Destination="GetHTTPOrchestrationForm.REQ" Source="E_SWITCH_1.EO1" dx1="305.0" dx2="205.0" dy="1875.0"/>
+      <Connection Comment="" Destination="E_CTU.R" Source="E_SWITCH.EO1" dx1="310.0"/>
+      <Connection Comment="" Destination="E_CTU.R" Source="E_SWITCH_1.EO1" dx1="60.0" dx2="60.0" dy="120.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="APPEND_STRING_3.OUT" dx1="155.0"/>
+      <Connection Comment="" Destination="E_PERMIT.PERMIT" Source="InitFlag.Q" dx1="170.0"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="requestOrchestration.serviceRequestForm" dx1="840.0"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.IN_2" Source="requestOrchestration.endpoint" dx1="615.0"/>
+      <Connection Comment="" Destination="requestOrchestration.orchestrationResponse" Source="GetHTTPOrchestrationForm.output"/>
+      <Connection Comment="" Destination="Request.QI" Source="InitFlag.Q" dx1="740.0"/>
+      <Connection Comment="" Destination="Request.ID" Source="F_STRING_TO_WSTRING.OUT" dx1="1055.0"/>
+      <Connection Comment="" Destination="Request.SD_1" Source="ANYToJSON.output" dx1="325.0"/>
+      <Connection Comment="" Destination="GetHTTPOrchestrationForm.response" Source="Request.RD_1" dx1="60.0" dx2="60.0" dy="310.0"/>
+      <Connection Comment="" Destination="E_SWITCH.G" Source="Request.QO" dx1="655.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1.G" Source="E_CTU.Q"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUaFull.sub b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUaFull.sub
new file mode 100644
index 0000000..c0c23c9
--- /dev/null
+++ b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUaFull.sub
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Request Orchestration using OPC UA with all fields from services, system and cloud to be set" Name="RequestOrchestrationOpcUaFull">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Request orchestration" Name="REQ" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Request finished" Name="CNF" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="Identification of the system" Name="systemName" Type="WSTRING"/>
+      <VarDeclaration Comment="Address of the offered services" Name="address" Type="WSTRING"/>
+      <VarDeclaration Comment="Port of the of the offered services" Name="port" Type="DINT"/>
+      <VarDeclaration Comment="Authentication info of the system" Name="authenticationInfo" Type="WSTRING"/>
+      <VarDeclaration Comment="Company (the capital  O is to avoid clash when exporting to C++)" Name="Operator" Type="WSTRING"/>
+      <VarDeclaration Comment="Identification of the cloud" Name="cloudName" Type="WSTRING"/>
+      <VarDeclaration Comment="Address to access the cloud" Name="addressCloud" Type="WSTRING"/>
+      <VarDeclaration Comment="Port to access the cloud" Name="portCloud" Type="DINT"/>
+      <VarDeclaration Comment="(Unclear documentation)" Name="gatekeeperServiceURI" Type="WSTRING"/>
+      <VarDeclaration Comment="Authentication info of the cloud" Name="authenticationInfoCloud" Type="WSTRING"/>
+      <VarDeclaration Comment="(Unclear documentation)" Name="secure" Type="BOOL"/>
+      <VarDeclaration Comment="Identification of the service" InitialValue="" Name="serviceDefinition" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Interfaces implemented by the service" InitialValue="" Name="interfaces" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata of the service in key=value format" Name="serviceMetadata" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="These flags can be set to tailor the orchestration process (use just the names of the flags to be enabled)" Name="orchestrationFlags" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="There can be a list from the Consumer stating which other Application Systems (even from other Clouds) it wishes to connect. If this field is filled out, the Orchestrator will try to facilitate these preferences" Name="preferredProviders" Type="PreferredProvider"/>
+      <VarDeclaration ArraySize="10" Comment="This object will be presenting the Consumer’s selected QoS level. Not implemented" Name="requestedQoS" Type="WSTRING"/>
+      <VarDeclaration Comment="Enpoint of the orchestrator" Name="orchestratorEndpoint" Type="WSTRING"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration ArraySize="10" Comment="Response from the orchestrator" Name="serviceRequestForm" Type="OrchestrationForm"/>
+    </OutputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="FieldsToArrowheadCloud" Type="FieldsToArrowheadCloud" x="2785.0" y="145.0"/>
+    <FB Comment="" Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" x="2825.0" y="-695.0"/>
+    <SubApp Comment="" Name="RequestOrchestrationOpcUaPartial" Type="RequestOrchestrationOpcUaPartial" x="6700.0" y="735.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.REQ" Source="REQ" dx1="465.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.REQ" Source="FieldsToArrowheadSystem.CNF" dx1="60.0" dx2="60.0" dy="660.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.REQ" Source="FieldsToArrowheadCloud.CNF" dx1="1270.0"/>
+      <Connection Comment="" Destination="CNF" Source="RequestOrchestrationOpcUaPartial.CNF" dx1="60.0" dx2="60.0" dy="-410.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.systemName" Source="systemName" dx1="660.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.Operator" Source="Operator" dx1="1250.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.address" Source="address" dx1="720.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.port" Source="port" dx1="885.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.authenticationInfo" Source="authenticationInfo" dx1="990.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.cloudName" Source="cloudName" dx1="950.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.address" Source="addressCloud" dx1="950.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.port" Source="portCloud" dx1="950.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.gatekeeperServiceURI" Source="gatekeeperServiceURI" dx1="950.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.authenticationInfo" Source="authenticationInfoCloud" dx1="950.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadCloud.secure" Source="secure" dx1="950.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.requesterSystem" Source="FieldsToArrowheadSystem.arrowheadSystem" dx1="1525.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.requesterCloud" Source="FieldsToArrowheadCloud.arrowheadCloud" dx1="1245.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.serviceDefinition" Source="serviceDefinition" dx1="2925.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.interfaces" Source="interfaces" dx1="2925.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.serviceMetadata" Source="serviceMetadata" dx1="2925.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.orchestrationFlags" Source="orchestrationFlags" dx1="2925.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.preferredProviders" Source="preferredProviders" dx1="2925.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.requestedQoS" Source="requestedQoS" dx1="2925.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUaPartial.orchestratorEndpoint" Source="orchestratorEndpoint" dx1="2925.0"/>
+      <Connection Comment="" Destination="serviceRequestForm" Source="RequestOrchestrationOpcUaPartial.serviceRequestForm" dx1="60.0" dx2="60.0" dy="-485.0"/>
+    </DataConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUaPartial.sub b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUaPartial.sub
new file mode 100644
index 0000000..709bef4
--- /dev/null
+++ b/data/typelibrary/Arrowhead/Orchestrator/OpcUa/RequestOrchestrationOpcUaPartial.sub
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Request Orchestration using OPC UA with all fields from services to be set" Name="RequestOrchestrationOpcUaPartial">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Request orchestration" Name="REQ" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Request finished" Name="CNF" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="The ArrowheadSystem identifier that is requesting the orchestration" Name="requesterSystem" Type="ArrowheadSystem"/>
+      <VarDeclaration Comment="Not to be used by Application Systems. This field is only used when there is an inbound request from another Cloud. This can only be submitted by the Gatekeeper" Name="requesterCloud" Type="ArrowheadCloud"/>
+      <VarDeclaration Comment="Identification of the service" InitialValue="" Name="serviceDefinition" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Interfaces implemented by the service" InitialValue="" Name="interfaces" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata of the service in key=value format" Name="serviceMetadata" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="These flags can be set to tailor the orchestration process (use just the names of the flags to be enabled)" Name="orchestrationFlags" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="There can be a list from the Consumer stating which other Application Systems (even from other Clouds) it wishes to connect. If this field is filled out, the Orchestrator will try to facilitate these preferences" Name="preferredProviders" Type="PreferredProvider"/>
+      <VarDeclaration ArraySize="10" Comment="This object will be presenting the Consumer’s selected QoS level. Not implemented" Name="requestedQoS" Type="WSTRING"/>
+      <VarDeclaration Comment="Enpoint of the orchestrator" Name="orchestratorEndpoint" Type="WSTRING"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration ArraySize="10" Comment="Response from the orchestrator" Name="serviceRequestForm" Type="OrchestrationForm"/>
+    </OutputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="FieldsToServiceRequestForm" Type="FieldsToServiceRequestForm" x="3805.0" y="-85.0"/>
+    <FB Comment="" Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" x="1510.0" y="1475.0"/>
+    <FB Comment="" Name="RequestOrchestrationForm" Type="RequestOrchestrationForm" x="6135.0" y="1900.0"/>
+    <FB Comment="" Name="RequestOrchestrationOpcUa" Type="RequestOrchestrationOpcUa" x="8520.0" y="2400.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="FieldsToArrowheadService.REQ" Source="REQ" dx1="465.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRequestForm.REQ" Source="FieldsToArrowheadService.CNF" dx1="355.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationForm.requestOrchestator" Source="FieldsToServiceRequestForm.CNF" dx1="555.0"/>
+      <Connection Comment="" Destination="CNF" Source="RequestOrchestrationForm.responseReceived" dx1="60.0" dx2="60.0" dy="-990.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="FieldsToServiceRequestForm.requesterSystem" Source="requesterSystem" dx1="1670.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRequestForm.requesterCloud" Source="requesterCloud" dx1="1500.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRequestForm.requestedService" Source="FieldsToArrowheadService.arrowheadService" dx1="550.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceDefinition" Source="serviceDefinition" dx1="400.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.interfaces" Source="interfaces" dx1="335.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceMetadata" Source="serviceMetadata" dx1="260.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRequestForm.orchestrationFlags" Source="orchestrationFlags" dx1="1500.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRequestForm.preferredProviders" Source="preferredProviders" dx1="1500.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRequestForm.requestedQoS" Source="requestedQoS" dx1="1500.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationForm.serviceRequestForm" Source="FieldsToServiceRequestForm.serviceRequestForm" dx1="505.0"/>
+      <Connection Comment="" Destination="serviceRequestForm" Source="RequestOrchestrationForm.orchestrationResponse" dx1="60.0" dx2="60.0" dy="-1065.0"/>
+      <Connection Comment="" Destination="RequestOrchestrationForm.endpoint" Source="orchestratorEndpoint" dx1="2695.0"/>
+    </DataConnections>
+    <AdapterConnections>
+      <Connection Comment="" Destination="RequestOrchestrationOpcUa.requestOrchestration" Source="RequestOrchestrationForm.requestOrchestration" dx1="435.0"/>
+    </AdapterConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm.dtp b/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm.dtp
index 6fa4b7b..57f68e9 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm.dtp
+++ b/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="OrchestrationForm" Comment="Reponse sent by the orchestrator" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2018 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm2OrchestrationForm.fbt b/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm2OrchestrationForm.fbt
index d94cc74..8bd102c 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm2OrchestrationForm.fbt
+++ b/data/typelibrary/Arrowhead/Orchestrator/OrchestrationForm2OrchestrationForm.fbt
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <FBType Comment="Helper FB to set the connection to a Orchestration Form type" Name="OrchestrationForm2OrchestrationForm">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-01-28" Organization="fortiss GmbH" Version="1.0"/>
   <InterfaceList>
     <EventInputs>
diff --git a/data/typelibrary/Arrowhead/Orchestrator/PreferredProvider.dtp b/data/typelibrary/Arrowhead/Orchestrator/PreferredProvider.dtp
index 12c7f7e..96a2800 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/PreferredProvider.dtp
+++ b/data/typelibrary/Arrowhead/Orchestrator/PreferredProvider.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="PreferredProvider" Comment="" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2018 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/data/typelibrary/Arrowhead/Orchestrator/ServiceRequestForm.dtp b/data/typelibrary/Arrowhead/Orchestrator/ServiceRequestForm.dtp
index 603af8b..3b17086 100644
--- a/data/typelibrary/Arrowhead/Orchestrator/ServiceRequestForm.dtp
+++ b/data/typelibrary/Arrowhead/Orchestrator/ServiceRequestForm.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="ServiceRequestForm" Comment="A service request form to be sent to the ochestrator" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2018 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTP.fbt b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTP.fbt
index 26436e1..fa8b534 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTP.fbt
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTP.fbt
@@ -18,7 +18,7 @@
     <FB Comment="" Name="InitFlag" Type="E_SR" x="6975.0" y="1685.0"/>
     <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="7840.0" y="810.0"/>
     <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="3460.0" y="1395.0"/>
-    <FB Comment="" Name="GetHTTPResult" Type="GetArrayResponseFromHTTP" x="500.0" y="1400.0"/>
+    <FB Comment="" Name="GetHTTPResult" Type="GetArrayResponseFromJSON" x="500.0" y="1400.0"/>
     <DataConnections>
       <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="APPEND_STRING_3.OUT" dx1="285.0"/>
       <Connection Comment="" Destination="Query.ID" Source="F_STRING_TO_WSTRING.OUT" dx1="840.0"/>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSub.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSub.SUB
index bcdbed6..1885ab2 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSub.SUB
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSub.SUB
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Query services using HTTP with the service defined" Name="QueryServiceHTTPSub">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-02-05" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSubFull.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSubFull.SUB
index 9543e4a..9365130 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSubFull.SUB
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/QueryServiceHTTPSubFull.SUB
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Query services using HTTP with all service's fields to be defined" Name="QueryServiceHTTPSubFull">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-02-05" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterMultipleServicesHTTP.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterMultipleServicesHTTP.SUB
index f6c3d8b..25fd800 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterMultipleServicesHTTP.SUB
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterMultipleServicesHTTP.SUB
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Register many services with different serviceDefinition and serviceURI " Name="RegisterMultipleServicesHTTP">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-02-08" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServiceFullHTTP.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServiceFullHTTP.SUB
index 86708fc..c259a7c 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServiceFullHTTP.SUB
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServiceFullHTTP.SUB
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Register a Service using HTTP. All possible parameters are available to be set" Name="RegisterServiceFullHTTP">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-01-31" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServicePartialHTTP.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServicePartialHTTP.SUB
index fafcc4f..27c6f40 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServicePartialHTTP.SUB
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/HTTP/RegisterServicePartialHTTP.SUB
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <SubAppType Comment="Register a Service using HTTP. The system information is encapsulated" Name="RegisterServicePartialHTTP">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-01-31" Organization="fortiss GmbH" Version="1.0"/>
   <SubAppInterfaceList>
     <SubAppEventInputs>
@@ -30,6 +30,21 @@
     <FB Comment="" Name="E_SR" Type="E_SR" x="6365.0" y="-135.0"/>
     <FB Comment="" Name="E_SWITCH" Type="E_SWITCH" x="7880.0" y="415.0"/>
     <FB Comment="" Name="E_REND" Type="E_REND" x="7210.0" y="270.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="doneRegister" Source="RegisterService.doneRegister" dx1="1570.0"/>
+      <Connection Comment="" Destination="doneUnregister" Source="RegisterService.doneUnregister" dx1="1570.0"/>
+      <Connection Comment="" Destination="RegisterService.register" Source="E_SWITCH.EO1" dx1="80.0"/>
+      <Connection Comment="" Destination="RegisterService.unregister" Source="E_SWITCH.EO0" dx1="225.0"/>
+      <Connection Comment="" Destination="E_SR.S" Source="register" dx1="2855.0"/>
+      <Connection Comment="" Destination="E_SR.R" Source="unregister" dx1="2855.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.REQ" Source="register" dx1="2420.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.REQ" Source="unregister" dx1="2420.0"/>
+      <Connection Comment="" Destination="E_REND.EI1" Source="register" dx1="3315.0"/>
+      <Connection Comment="" Destination="E_REND.EI1" Source="unregister" dx1="3315.0"/>
+      <Connection Comment="" Destination="E_REND.EI2" Source="FieldsToServiceRegistryEntry.CNF" dx1="60.0" dx2="60.0" dy="-505.0"/>
+      <Connection Comment="" Destination="E_SWITCH.EI" Source="E_REND.EO" dx1="150.0"/>
+      <Connection Comment="" Destination="E_REND.R" Source="E_REND.EO" dx1="85.0" dx2="175.0" dy="-370.0"/>
+    </EventConnections>
     <DataConnections>
       <Connection Comment="" Destination="RegisterService.serviceRegistryEntry" Source="FieldsToServiceRegistryEntry.serviceRegistryEntry" dx1="665.0"/>
       <Connection Comment="" Destination="FieldsToServiceRegistryEntry.serviceURI" Source="serviceURI" dx1="615.0"/>
@@ -42,23 +57,8 @@
       <Connection Comment="" Destination="FieldsToServiceRegistryEntry.provider" Source="provider" dx1="3285.0"/>
       <Connection Comment="" Destination="FieldsToServiceRegistryEntry.providedService" Source="providedService" dx1="2420.0"/>
     </DataConnections>
-    <EventConnections>
-      <Connection Comment="" Destination="doneRegister" Source="RegisterService.doneRegister" dx1="1065.0"/>
-      <Connection Comment="" Destination="doneUnregister" Source="RegisterService.doneUnregister" dx1="1065.0"/>
-      <Connection Comment="" Destination="RegisterService.register" Source="E_SWITCH.EO1" dx1="80.0"/>
-      <Connection Comment="" Destination="RegisterService.unregister" Source="E_SWITCH.EO0" dx1="255.0"/>
-      <Connection Comment="" Destination="E_SR.S" Source="register" dx1="2855.0"/>
-      <Connection Comment="" Destination="E_SR.R" Source="unregister" dx1="2855.0"/>
-      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.REQ" Source="register" dx1="2420.0"/>
-      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.REQ" Source="unregister" dx1="2420.0"/>
-      <Connection Comment="" Destination="E_REND.EI1" Source="register" dx1="3315.0"/>
-      <Connection Comment="" Destination="E_REND.EI1" Source="unregister" dx1="3315.0"/>
-      <Connection Comment="" Destination="E_REND.EI2" Source="FieldsToServiceRegistryEntry.CNF" dx1="355.0"/>
-      <Connection Comment="" Destination="E_SWITCH.EI" Source="E_REND.EO" dx1="150.0"/>
-      <Connection Comment="" Destination="E_REND.R" Source="E_REND.EO" dx1="85.0" dx2="175.0" dy="-370.0"/>
-    </EventConnections>
     <AdapterConnections>
-      <Connection Comment="" Destination="RegisterServiceHTTP_1.registerService" Source="RegisterService.registerService" dx1="240.0"/>
+      <Connection Comment="" Destination="RegisterServiceHTTP_1.registerService" Source="RegisterService.registerService" dx1="95.0"/>
     </AdapterConnections>
   </SubAppNetwork>
 </SubAppType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUa.fbt b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUa.fbt
new file mode 100644
index 0000000..e9cf64b
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUa.fbt
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Query for Services using OPC UA" Name="QueryServiceOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <Sockets>
+      <AdapterDeclaration Comment="" Name="queryServices" Type="QueryServicesAdp" x="2000.0" y="1400.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="APPEND_STRING_3" Type="APPEND_STRING_3" x="4860.0" y="2090.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua[CALL_METHOD; "/>
+      <Parameter Name="IN_3" Value="STRING##; /Objects/2:ServiceRegistry/2:query]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="6155.0" y="2075.0"/>
+    <FB Comment="" Name="InitFlag" Type="E_SR" x="7435.0" y="1675.0"/>
+    <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="8300.0" y="800.0"/>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="3900.0" y="1400.0"/>
+    <FB Comment="" Name="GetHTTPResult" Type="GetArrayResponseFromJSON" x="500.0" y="1400.0"/>
+    <FB Comment="" Name="Query" Type="CLIENT_1" x="9060.0" y="1660.0"/>
+    <FB Comment="" Name="E_SWITCH_1" Type="E_SWITCH" x="12400.0" y="1500.0"/>
+    <FB Comment="" Name="E_SWITCH" Type="E_SWITCH" x="10500.0" y="1600.0"/>
+    <FB Comment="" Name="E_DELAY" Type="E_DELAY" x="14000.0" y="1500.0">
+      <Parameter Name="DT" Value="T#250ms"/>
+    </FB>
+    <FB Comment="" Name="E_CTU" Type="E_CTU" x="11600.0" y="1500.0">
+      <Parameter Name="PV" Value="UINT#3"/>
+    </FB>
+    <EventConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="APPEND_STRING_3.CNF" dx1="285.0"/>
+      <Connection Comment="" Destination="InitFlag.S" Source="F_STRING_TO_WSTRING.CNF" dx1="190.0"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.REQ" Source="ANYToJSON.CNF" dx1="185.0"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="queryServices.query"/>
+      <Connection Comment="" Destination="queryServices.queried" Source="GetHTTPResult.CNF"/>
+      <Connection Comment="" Destination="Query.INIT" Source="InitFlag.EO" dx1="295.0"/>
+      <Connection Comment="" Destination="Query.REQ" Source="E_PERMIT.EO" dx1="220.0"/>
+      <Connection Comment="" Destination="E_PERMIT.EI" Source="Query.INITO" dx1="60.0" dx2="60.0" dy="-1290.0"/>
+      <Connection Comment="" Destination="E_DELAY.START" Source="E_SWITCH_1.EO0"/>
+      <Connection Comment="" Destination="E_SWITCH_1.EI" Source="E_CTU.CUO"/>
+      <Connection Comment="" Destination="E_CTU.CU" Source="E_SWITCH.EO0" dx1="310.0"/>
+      <Connection Comment="" Destination="GetHTTPResult.REQ" Source="E_SWITCH.EO1" dx1="405.0" dx2="60.0" dy="-1900.0"/>
+      <Connection Comment="" Destination="InitFlag.R" Source="E_SWITCH.EO1" dx1="260.0" dx2="150.0" dy="-1650.0"/>
+      <Connection Comment="" Destination="E_SWITCH.EI" Source="Query.CNF" dx1="445.0"/>
+      <Connection Comment="" Destination="InitFlag.R" Source="E_SWITCH_1.EO1" dx1="60.0" dx2="60.0" dy="1350.0"/>
+      <Connection Comment="" Destination="GetHTTPResult.REQ" Source="E_SWITCH_1.EO1" dx1="60.0" dx2="360.0" dy="-2170.0"/>
+      <Connection Comment="" Destination="Query.REQ" Source="E_DELAY.EO" dx1="60.0" dx2="230.0" dy="-210.0"/>
+      <Connection Comment="" Destination="E_CTU.R" Source="E_SWITCH.EO1" dx1="310.0"/>
+      <Connection Comment="" Destination="E_CTU.R" Source="E_SWITCH_1.EO1" dx1="60.0" dx2="60.0" dy="120.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="APPEND_STRING_3.OUT" dx1="285.0"/>
+      <Connection Comment="" Destination="E_PERMIT.PERMIT" Source="InitFlag.Q" dx1="205.0"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="queryServices.serviceQueryForm"/>
+      <Connection Comment="" Destination="APPEND_STRING_3.IN_2" Source="queryServices.endpoint" dx1="325.0"/>
+      <Connection Comment="" Destination="queryServices.serviceEntries" Source="GetHTTPResult.output"/>
+      <Connection Comment="" Destination="Query.QI" Source="InitFlag.Q" dx1="370.0"/>
+      <Connection Comment="" Destination="Query.ID" Source="F_STRING_TO_WSTRING.OUT" dx1="840.0"/>
+      <Connection Comment="" Destination="Query.SD_1" Source="ANYToJSON.output" dx1="4045.0"/>
+      <Connection Comment="" Destination="GetHTTPResult.response" Source="Query.RD_1" dx1="60.0" dx2="60.0" dy="460.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1.G" Source="E_CTU.Q"/>
+      <Connection Comment="" Destination="E_SWITCH.G" Source="Query.QO" dx1="445.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUaSub.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUaSub.SUB
new file mode 100644
index 0000000..814574c
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUaSub.SUB
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Query services using OPC UA with the service defined" Name="QueryServiceOpcUaSub">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Query for services" Name="REQ" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Query finished" Name="CNF" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="The Arrowhead Service object that is looked for (SD and supported IDD-s)" Name="service" Type="ArrowheadService"/>
+      <VarDeclaration Comment="True, if service metadata shall be taken into account during query" Name="metadaSearch" Type="BOOL"/>
+      <VarDeclaration Comment="True, if the selected (query fitting) Application Systems shall be pinged to see if they’re alive" Name="pingProviders" Type="BOOL"/>
+      <VarDeclaration Comment="The minimum version of the Service we are looking for" Name="version" Type="DINT"/>
+      <VarDeclaration Comment="Address of the Service Registry (not officially in the documentation, but it simplifies the FBs)" Name="address" Type="WSTRING"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration ArraySize="10" Comment="" Name="serviceEntries" Type="ServiceRegistryEntry"/>
+    </OutputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="FieldsToServiceQueryForm" Type="FieldsToServiceQueryForm" x="2400.0" y="-165.0"/>
+    <FB Comment="" Name="QueryService" Type="QueryService" x="4920.0" y="155.0"/>
+    <FB Comment="" Name="QueryServiceOpcUa" Type="QueryServiceOpcUa" x="6540.0" y="865.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="QueryService.query" Source="FieldsToServiceQueryForm.CNF" dx1="655.0"/>
+      <Connection Comment="" Destination="CNF" Source="QueryService.queried" dx1="60.0" dx2="60.0" dy="-120.0"/>
+      <Connection Comment="" Destination="FieldsToServiceQueryForm.REQ" Source="REQ" dx1="945.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="QueryService.serviceQueryForm" Source="FieldsToServiceQueryForm.serviceQueryForm" dx1="470.0"/>
+      <Connection Comment="" Destination="serviceEntries" Source="QueryService.serviceEntries" dx1="60.0" dx2="60.0" dy="-195.0"/>
+      <Connection Comment="" Destination="FieldsToServiceQueryForm.service" Source="service" dx1="750.0"/>
+      <Connection Comment="" Destination="FieldsToServiceQueryForm.metadataSearch" Source="metadaSearch" dx1="525.0"/>
+      <Connection Comment="" Destination="FieldsToServiceQueryForm.pingProviders" Source="pingProviders" dx1="390.0"/>
+      <Connection Comment="" Destination="FieldsToServiceQueryForm.version" Source="version" dx1="210.0"/>
+      <Connection Comment="" Destination="QueryService.address" Source="address" dx1="100.0"/>
+    </DataConnections>
+    <AdapterConnections>
+      <Connection Comment="" Destination="QueryServiceOpcUa.queryServices" Source="QueryService.queryServices" dx1="100.0"/>
+    </AdapterConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUaSubFull.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUaSubFull.SUB
new file mode 100644
index 0000000..1d7b0f4
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/QueryServiceOpcUaSubFull.SUB
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Query services using OPC UA with all service's fields to be defined" Name="QueryServiceOpcUaSubFull">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Query for services" Name="REQ" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Query finished" Name="CNF" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="Interfaces implemented by the service" Name="serviceDefinition" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Interfaces implemented by the service" Name="interfaces" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata of the service in key=value format" Name="serviceMetadata" Type="WSTRING"/>
+      <VarDeclaration Comment="True, if service metadata shall be taken into account during query" Name="metadaSearch" Type="BOOL"/>
+      <VarDeclaration Comment="True, if the selected (query fitting) Application Systems shall be pinged to see if they’re alive" Name="pingProviders" Type="BOOL"/>
+      <VarDeclaration Comment="The minimum version of the Service we are looking for" Name="version" Type="DINT"/>
+      <VarDeclaration Comment="Address of the Service Registry" Name="address" Type="WSTRING"/>
+    </InputVars>
+    <OutputVars>
+      <VarDeclaration ArraySize="10" Comment="" Name="serviceEntries" Type="ServiceRegistryEntry"/>
+    </OutputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" x="1395.0" y="-245.0"/>
+    <SubApp Comment="" Name="QueryServiceOpcUaSub" Type="QueryServiceOpcUaSub" x="3705.0" y="-25.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="FieldsToArrowheadService.REQ" Source="REQ" dx1="385.0"/>
+      <Connection Comment="" Destination="QueryServiceOpcUaSub.REQ" Source="FieldsToArrowheadService.CNF" dx1="570.0"/>
+      <Connection Comment="" Destination="CNF" Source="QueryServiceOpcUaSub.CNF" dx1="60.0" dx2="60.0" dy="-30.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="FieldsToArrowheadService.interfaces" Source="interfaces" dx1="290.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceDefinition" Source="serviceDefinition" dx1="290.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceMetadata" Source="serviceMetadata" dx1="290.0"/>
+      <Connection Comment="" Destination="QueryServiceOpcUaSub.service" Source="FieldsToArrowheadService.arrowheadService" dx1="480.0"/>
+      <Connection Comment="" Destination="QueryServiceOpcUaSub.metadaSearch" Source="metadaSearch" dx1="1500.0"/>
+      <Connection Comment="" Destination="QueryServiceOpcUaSub.pingProviders" Source="pingProviders" dx1="1500.0"/>
+      <Connection Comment="" Destination="QueryServiceOpcUaSub.version" Source="version" dx1="1500.0"/>
+      <Connection Comment="" Destination="QueryServiceOpcUaSub.address" Source="address" dx1="1500.0"/>
+      <Connection Comment="" Destination="serviceEntries" Source="QueryServiceOpcUaSub.serviceEntries" dx1="60.0" dx2="60.0" dy="-105.0"/>
+    </DataConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterMultipleServicesOpcUa.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterMultipleServicesOpcUa.SUB
new file mode 100644
index 0000000..ee75499
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterMultipleServicesOpcUa.SUB
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Register many services with different serviceDefinition and serviceURI " Name="RegisterMultipleServicesOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Register the services" Name="register" Type="Event"/>
+      <SubAppEvent Comment="Unregister the services" Name="unregister" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Services registered" Name="registerDone" Type="Event"/>
+      <SubAppEvent Comment="Services unregistered" Name="unregisterUndone" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="ArrowheadSystem that is providing the Service" Name="provider" Type="ArrowheadSystem"/>
+      <VarDeclaration ArraySize="10" Comment="Identifications of the services" Name="serviceDefinition" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Interfaces implemented by the service" Name="interfaces" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata of the service in key=value format" Name="serviceMetadata" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="The URL subpaths of the Services within the address:port of the Provider" Name="serviceURI" Type="WSTRING"/>
+      <VarDeclaration Comment="The version numbering of the Service provided" Name="version" Type="DINT"/>
+      <VarDeclaration Comment="True, if the service is provided via UDP. By default, it is false" Name="udp" Type="BOOL"/>
+      <VarDeclaration Comment="Service validity time period expressed in seconds. This gets converted to a date-time, and stored in the database" Name="ttl" Type="DINT"/>
+      <VarDeclaration Comment="Metadata belonging to a service/provider pair" Name="metadata" Type="WSTRING"/>
+      <VarDeclaration Comment="Endpoint (IP:PORT/URI) of the Service Registry" Name="SREndpoint" Type="WSTRING"/>
+    </InputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="Reset" Type="E_MERGE" x="13520.0" y="-425.0"/>
+    <FB Comment="" Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" x="6550.0" y="1300.0"/>
+    <FB Comment="" Name="RegUnreg" Type="E_SWITCH" x="11355.0" y="2215.0"/>
+    <FB Comment="" Name="Register" Type="E_SR" x="7125.0" y="-25.0"/>
+    <FB Comment="" Name="RegisterService" Type="RegisterService" x="13325.0" y="2840.0"/>
+    <FB Comment="" Name="RegUnregDone" Type="E_SWITCH" x="12160.0" y="590.0"/>
+    <FB Comment="" Name="FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" x="8350.0" y="2160.0"/>
+    <FB Comment="" Name="GetName" Type="GET_AT_INDEX" x="5840.0" y="4935.0"/>
+    <FB Comment="" Name="E_CTU" Type="E_CTU" x="4610.0" y="5115.0"/>
+    <FB Comment="" Name="E_SWITCH" Type="E_SWITCH" x="9505.0" y="5125.0"/>
+    <FB Comment="" Name="WSTRING2WSTRING" Type="WSTRING2WSTRING" x="7300.0" y="5250.0"/>
+    <FB Comment="" Name="IsLast" Type="F_EQ" x="8705.0" y="5155.0">
+      <Parameter Name="IN1" Value="WSTRING#&quot;&quot;"/>
+    </FB>
+    <FB Comment="" Name="GetURI" Type="GET_AT_INDEX" x="5830.0" y="5730.0"/>
+    <FB Comment="" Name="E_SPLIT" Type="E_SPLIT" x="10310.0" y="5150.0"/>
+    <FB Comment="" Name="PermitUnreg" Type="E_PERMIT" x="4770.0" y="-715.0"/>
+    <FB Comment="" Name="F_NOT" Type="F_NOT" x="3775.0" y="-715.0"/>
+    <FB Comment="" Name="PermitReg" Type="E_PERMIT" x="4775.0" y="-1680.0"/>
+    <FB Comment="" Name="Regblock" Type="E_SR" x="2710.0" y="-1410.0"/>
+    <FB Comment="" Name="F_NOT_1" Type="F_NOT" x="3780.0" y="-1720.0"/>
+    <FB Comment="" Name="UnRegBlock" Type="E_SR" x="2675.0" y="-535.0"/>
+    <FB Comment="" Name="ARRAY2ARRAY_10_WSTRING" Type="ARRAY2ARRAY_10_WSTRING" x="2875.0" y="4810.0"/>
+    <FB Comment="" Name="ARRAY2ARRAY_10_WSTRING_1" Type="ARRAY2ARRAY_10_WSTRING" x="2910.0" y="3760.0"/>
+    <FB Comment="" Name="RegisterServiceOpcUa" Type="RegisterServiceOpcUa" x="15900.0" y="3200.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="Reset.EI1" Source="RegUnregDone.EO0" dx1="420.0"/>
+      <Connection Comment="" Destination="Reset.EI2" Source="RegUnregDone.EO1" dx1="580.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.REQ" Source="FieldsToArrowheadService.CNF" dx1="160.0"/>
+      <Connection Comment="" Destination="RegUnreg.EI" Source="FieldsToServiceRegistryEntry.CNF" dx1="535.0"/>
+      <Connection Comment="" Destination="RegisterService.unregister" Source="RegUnreg.EO0" dx1="910.0"/>
+      <Connection Comment="" Destination="RegisterService.register" Source="RegUnreg.EO1" dx1="760.0"/>
+      <Connection Comment="" Destination="registerDone" Source="RegUnregDone.EO1" dx1="60.0" dx2="60.0" dy="-385.0"/>
+      <Connection Comment="" Destination="unregisterUndone" Source="RegUnregDone.EO0" dx1="60.0" dx2="60.0" dy="-285.0"/>
+      <Connection Comment="" Destination="E_SWITCH.EI" Source="IsLast.CNF" dx1="210.0"/>
+      <Connection Comment="" Destination="IsLast.REQ" Source="WSTRING2WSTRING.CNF" dx1="235.0"/>
+      <Connection Comment="" Destination="WSTRING2WSTRING.REQ" Source="GetURI.CNF" dx1="515.0"/>
+      <Connection Comment="" Destination="E_CTU.CU" Source="E_SPLIT.EO1" dx1="60.0" dx2="60.0" dy="-690.0"/>
+      <Connection Comment="" Destination="E_SPLIT.EI" Source="E_SWITCH.EO0" dx1="185.0"/>
+      <Connection Comment="" Destination="E_CTU.R" Source="E_SWITCH.EO1" dx1="200.0" dx2="625.0" dy="1250.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.REQ" Source="E_SPLIT.EO2" dx1="280.0" dx2="205.0" dy="-1140.0"/>
+      <Connection Comment="" Destination="GetName.REQ" Source="RegisterService.doneRegister" dx1="60.0" dx2="60.0" dy="-550.0"/>
+      <Connection Comment="" Destination="RegUnregDone.EI" Source="E_CTU.RO" dx1="285.0"/>
+      <Connection Comment="" Destination="PermitReg.EI" Source="F_NOT_1.CNF" dx1="300.0"/>
+      <Connection Comment="" Destination="PermitUnreg.EI" Source="F_NOT.CNF"/>
+      <Connection Comment="" Destination="Register.R" Source="PermitUnreg.EO" dx1="960.0"/>
+      <Connection Comment="" Destination="Register.S" Source="PermitReg.EO" dx1="1330.0"/>
+      <Connection Comment="" Destination="UnRegBlock.R" Source="Reset.EO" dx1="60.0" dx2="60.0" dy="420.0"/>
+      <Connection Comment="" Destination="Regblock.R" Source="Reset.EO" dx1="60.0" dx2="60.0" dy="-1685.0"/>
+      <Connection Comment="" Destination="F_NOT_1.REQ" Source="register" dx1="1060.0"/>
+      <Connection Comment="" Destination="F_NOT.REQ" Source="unregister" dx1="1290.0"/>
+      <Connection Comment="" Destination="UnRegBlock.S" Source="PermitUnreg.EO" dx1="60.0" dx2="60.0" dy="-170.0"/>
+      <Connection Comment="" Destination="Regblock.S" Source="PermitUnreg.EO" dx1="150.0" dx2="60.0" dy="-345.0"/>
+      <Connection Comment="" Destination="Regblock.S" Source="PermitReg.EO" dx1="60.0" dx2="410.0" dy="-335.0"/>
+      <Connection Comment="" Destination="UnRegBlock.S" Source="PermitReg.EO" dx1="180.0" dx2="60.0" dy="730.0"/>
+      <Connection Comment="" Destination="GetName.REQ" Source="RegisterService.doneUnregister" dx1="240.0" dx2="190.0" dy="-910.0"/>
+      <Connection Comment="" Destination="GetName.REQ" Source="ARRAY2ARRAY_10_WSTRING.CNF" dx1="875.0"/>
+      <Connection Comment="" Destination="ARRAY2ARRAY_10_WSTRING.REQ" Source="ARRAY2ARRAY_10_WSTRING_1.CNF" dx1="60.0" dx2="60.0" dy="690.0"/>
+      <Connection Comment="" Destination="ARRAY2ARRAY_10_WSTRING_1.REQ" Source="PermitReg.EO" dx1="340.0" dx2="60.0" dy="3055.0"/>
+      <Connection Comment="" Destination="ARRAY2ARRAY_10_WSTRING_1.REQ" Source="PermitUnreg.EO" dx1="60.0" dx2="60.0" dy="2675.0"/>
+      <Connection Comment="" Destination="GetURI.REQ" Source="GetName.CNF" dx1="60.0" dx2="60.0" dy="395.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.providedService" Source="FieldsToArrowheadService.arrowheadService" dx1="110.0"/>
+      <Connection Comment="" Destination="RegUnreg.G" Source="Register.Q" dx1="2800.0"/>
+      <Connection Comment="" Destination="RegUnregDone.G" Source="Register.Q" dx1="3350.0"/>
+      <Connection Comment="" Destination="RegisterService.serviceRegistryEntry" Source="FieldsToServiceRegistryEntry.serviceRegistryEntry" dx1="530.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.interfaces" Source="interfaces" dx1="2355.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceMetadata" Source="serviceMetadata" dx1="2240.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.version" Source="version" dx1="1130.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.udp" Source="udp" dx1="925.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.ttl" Source="ttl" dx1="725.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.metadata" Source="metadata" dx1="565.0"/>
+      <Connection Comment="" Destination="RegisterService.endpoint" Source="SREndpoint" dx1="360.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.provider" Source="provider" dx1="1625.0"/>
+      <Connection Comment="" Destination="GetName.INDEX" Source="E_CTU.CV" dx1="500.0"/>
+      <Connection Comment="" Destination="WSTRING2WSTRING.IN" Source="GetName.OUT" dx1="425.0"/>
+      <Connection Comment="" Destination="GetURI.INDEX" Source="E_CTU.CV" dx1="495.0"/>
+      <Connection Comment="" Destination="E_SWITCH.G" Source="IsLast.OUT" dx1="210.0"/>
+      <Connection Comment="" Destination="IsLast.IN2" Source="WSTRING2WSTRING.OUT" dx1="305.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.serviceURI" Source="GetURI.OUT" dx1="660.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceDefinition" Source="GetName.OUT" dx1="60.0" dx2="60.0" dy="-1865.0"/>
+      <Connection Comment="" Destination="PermitUnreg.PERMIT" Source="F_NOT.OUT"/>
+      <Connection Comment="" Destination="F_NOT.IN" Source="UnRegBlock.Q" dx1="115.0"/>
+      <Connection Comment="" Destination="PermitReg.PERMIT" Source="F_NOT_1.OUT" dx1="300.0"/>
+      <Connection Comment="" Destination="F_NOT_1.IN" Source="Regblock.Q" dx1="225.0"/>
+      <Connection Comment="" Destination="GetURI.IN_ARRAY" Source="ARRAY2ARRAY_10_WSTRING.OUT" dx1="445.0"/>
+      <Connection Comment="" Destination="ARRAY2ARRAY_10_WSTRING.IN" Source="serviceURI" dx1="1090.0"/>
+      <Connection Comment="" Destination="GetName.IN_ARRAY" Source="ARRAY2ARRAY_10_WSTRING_1.OUT" dx1="1380.0"/>
+      <Connection Comment="" Destination="ARRAY2ARRAY_10_WSTRING_1.IN" Source="serviceDefinition" dx1="1305.0"/>
+    </DataConnections>
+    <AdapterConnections>
+      <Connection Comment="" Destination="RegisterServiceOpcUa.registerService" Source="RegisterService.registerService" dx1="425.0"/>
+    </AdapterConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceFullOpcUa.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceFullOpcUa.SUB
new file mode 100644
index 0000000..065ad2f
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceFullOpcUa.SUB
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Register a Service using  OPC UA. All possible parameters are available to be set" Name="RegisterServiceFullOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Register the service" Name="register" Type="Event"/>
+      <SubAppEvent Comment="Unregister the service" Name="unregister" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Register finished" Name="doneRegister" Type="Event"/>
+      <SubAppEvent Comment="Unregister finished" Name="doneUnregister" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="Identification of the system" Name="systemName" Type="WSTRING"/>
+      <VarDeclaration Comment="Address of the offered services" Name="address" Type="WSTRING"/>
+      <VarDeclaration Comment="Port of the of the offered services" Name="port" Type="DINT"/>
+      <VarDeclaration Comment="Authentication info of the system" Name="authenticationInfo" Type="WSTRING"/>
+      <VarDeclaration Comment="Identification of the service" Name="serviceDefinition" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Interfaces implemented by the service" Name="interfaces" Type="WSTRING"/>
+      <VarDeclaration ArraySize="10" Comment="Metadata of the service in key=value format" Name="serviceMetadata" Type="WSTRING"/>
+      <VarDeclaration Comment="The URL subpath of the Service within the address:port of the Provider" Name="serviceURI" Type="WSTRING"/>
+      <VarDeclaration Comment="The version numbering of the Service provided" Name="version" Type="DINT"/>
+      <VarDeclaration Comment="True, if the service is provided via UDP. By default, it is false" Name="udp" Type="BOOL"/>
+      <VarDeclaration Comment="Service validity time period expressed in seconds. This gets converted to a date-time, and stored in the database" Name="ttl" Type="DINT"/>
+      <VarDeclaration Comment="Metadata belonging to a service/provider pair" Name="metadata" Type="WSTRING"/>
+      <VarDeclaration Comment="Endpoint (IP:PORT/URI) of the Service Registry" Name="SRendpoint" Type="WSTRING"/>
+    </InputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="FieldsToArrowheadSystem" Type="FieldsToArrowheadSystem" x="1890.0" y="135.0"/>
+    <FB Comment="" Name="FieldsToArrowheadService" Type="FieldsToArrowheadService" x="1940.0" y="1095.0"/>
+    <FB Comment="" Name="E_SR" Type="E_SR" x="5450.0" y="1200.0"/>
+    <FB Comment="" Name="E_SWITCH" Type="E_SWITCH" x="6115.0" y="1880.0"/>
+    <SubApp Comment="" Name="RegisterServicePartialOpcUa" Type="RegisterServicePartialOpcUa" x="7125.0" y="2185.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.REQ" Source="unregister" dx1="975.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.REQ" Source="register" dx1="975.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.REQ" Source="FieldsToArrowheadSystem.CNF" dx1="60.0" dx2="60.0" dy="480.0"/>
+      <Connection Comment="" Destination="E_SR.S" Source="register" dx1="4335.0"/>
+      <Connection Comment="" Destination="E_SR.R" Source="unregister" dx1="3725.0"/>
+      <Connection Comment="" Destination="E_SWITCH.EI" Source="FieldsToArrowheadService.CNF" dx1="1465.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.register" Source="E_SWITCH.EO1" dx1="280.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.unregister" Source="E_SWITCH.EO0" dx1="345.0"/>
+      <Connection Comment="" Destination="doneRegister" Source="RegisterServicePartialOpcUa.doneRegister" dx1="60.0" dx2="60.0" dy="-1135.0"/>
+      <Connection Comment="" Destination="doneUnregister" Source="RegisterServicePartialOpcUa.doneUnregister" dx1="60.0" dx2="60.0" dy="-1135.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.systemName" Source="systemName" dx1="975.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.address" Source="address" dx1="975.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.port" Source="port" dx1="975.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadSystem.authenticationInfo" Source="authenticationInfo" dx1="935.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceDefinition" Source="serviceDefinition" dx1="875.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.interfaces" Source="interfaces" dx1="790.0"/>
+      <Connection Comment="" Destination="FieldsToArrowheadService.serviceMetadata" Source="serviceMetadata" dx1="695.0"/>
+      <Connection Comment="" Destination="E_SWITCH.G" Source="E_SR.Q" dx1="215.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.providedService" Source="FieldsToArrowheadService.arrowheadService" dx1="330.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.provider" Source="FieldsToArrowheadSystem.arrowheadSystem" dx1="490.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.serviceURI" Source="serviceURI" dx1="615.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.version" Source="version" dx1="485.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.udp" Source="udp" dx1="375.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.ttl" Source="ttl" dx1="275.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.metadata" Source="metadata" dx1="175.0"/>
+      <Connection Comment="" Destination="RegisterServicePartialOpcUa.SRendpoint" Source="SRendpoint" dx1="90.0"/>
+    </DataConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceOpcUa.fbt b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceOpcUa.fbt
new file mode 100644
index 0000000..77c1134
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceOpcUa.fbt
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Register Service using OPC UA" Name="RegisterServiceOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <Sockets>
+      <AdapterDeclaration Comment="Register Service adapter" Name="registerService" Type="RegisterServiceAdp" x="-155.0" y="1810.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="InitFlagReg" Type="E_SR" x="7410.0" y="695.0"/>
+    <FB Comment="" Name="E_PERMIT" Type="E_PERMIT" x="9100.0" y="300.0"/>
+    <FB Comment="" Name="CreateRegisterID" Type="APPEND_STRING_3" x="3400.0" y="900.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua[CALL_METHOD; "/>
+      <Parameter Name="IN_3" Value="STRING##; /Objects/2:ServiceRegistry/2:register]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="4600.0" y="900.0"/>
+    <FB Comment="" Name="E_PERMIT_1" Type="E_PERMIT" x="9100.0" y="2100.0"/>
+    <FB Comment="" Name="InitFlagUnReg" Type="E_SR" x="7400.0" y="2400.0"/>
+    <FB Comment="" Name="CreateUnRegisterID" Type="APPEND_STRING_3" x="3400.0" y="3000.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua[CALL_METHOD; "/>
+      <Parameter Name="IN_3" Value="STRING##; /Objects/2:ServiceRegistry/2:remove]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING_1" Type="F_STRING_TO_WSTRING" x="4585.0" y="3000.0"/>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="6000.0" y="1905.0"/>
+    <FB Comment="" Name="Register" Type="CLIENT_1_0" x="10115.0" y="700.0"/>
+    <FB Comment="" Name="Unregister" Type="CLIENT_1_0" x="10090.0" y="2800.0"/>
+    <FB Comment="" Name="E_SWITCH" Type="E_SWITCH" x="11500.0" y="800.0"/>
+    <FB Comment="" Name="E_SWITCH_1" Type="E_SWITCH" x="13400.0" y="700.0"/>
+    <FB Comment="" Name="E_DELAY" Type="E_DELAY" x="15000.0" y="700.0">
+      <Parameter Name="DT" Value="T#250ms"/>
+    </FB>
+    <FB Comment="" Name="E_CTU" Type="E_CTU" x="12600.0" y="700.0">
+      <Parameter Name="PV" Value="UINT#3"/>
+    </FB>
+    <FB Comment="" Name="E_SWITCH_1_1" Type="E_SWITCH" x="13400.0" y="2800.0"/>
+    <FB Comment="" Name="E_SWITCH_2" Type="E_SWITCH" x="11500.0" y="2900.0"/>
+    <FB Comment="" Name="E_DELAY_1" Type="E_DELAY" x="15000.0" y="2800.0">
+      <Parameter Name="DT" Value="T#250ms"/>
+    </FB>
+    <FB Comment="" Name="E_CTU_1" Type="E_CTU" x="12600.0" y="2800.0">
+      <Parameter Name="PV" Value="UINT#3"/>
+    </FB>
+    <EventConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="CreateRegisterID.CNF"/>
+      <Connection Comment="" Destination="InitFlagReg.S" Source="F_STRING_TO_WSTRING.CNF" dx1="955.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_1.REQ" Source="CreateUnRegisterID.CNF"/>
+      <Connection Comment="" Destination="InitFlagUnReg.S" Source="F_STRING_TO_WSTRING_1.CNF" dx1="1040.0"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING.CNF" dx1="265.0"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING_1.CNF" dx1="260.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.REQ" Source="registerService.registerService" dx1="1185.0"/>
+      <Connection Comment="" Destination="CreateUnRegisterID.REQ" Source="registerService.unregisterService" dx1="1185.0"/>
+      <Connection Comment="" Destination="Register.INIT" Source="InitFlagReg.EO" dx1="1105.0"/>
+      <Connection Comment="" Destination="Register.REQ" Source="E_PERMIT.EO" dx1="290.0"/>
+      <Connection Comment="" Destination="E_PERMIT.EI" Source="Register.INITO" dx1="60.0" dx2="60.0" dy="-720.0"/>
+      <Connection Comment="" Destination="Unregister.INIT" Source="InitFlagUnReg.EO" dx1="1085.0"/>
+      <Connection Comment="" Destination="Unregister.REQ" Source="E_PERMIT_1.EO" dx1="290.0"/>
+      <Connection Comment="" Destination="E_PERMIT_1.EI" Source="Unregister.INITO" dx1="60.0" dx2="60.0" dy="-1155.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1.EI" Source="E_CTU.CUO"/>
+      <Connection Comment="" Destination="E_DELAY.START" Source="E_SWITCH_1.EO0"/>
+      <Connection Comment="" Destination="E_CTU.CU" Source="E_SWITCH.EO0" dx1="310.0"/>
+      <Connection Comment="" Destination="InitFlagReg.R" Source="E_SWITCH.EO1" dx1="60.0" dx2="60.0" dy="-1250.0"/>
+      <Connection Comment="" Destination="registerService.doneRegister" Source="E_SWITCH.EO1" dx1="185.0" dx2="150.0" dy="-1690.0"/>
+      <Connection Comment="" Destination="E_SWITCH.EI" Source="Register.CNF"/>
+      <Connection Comment="" Destination="Register.REQ" Source="E_DELAY.EO" dx1="60.0" dx2="60.0" dy="-485.0"/>
+      <Connection Comment="" Destination="E_DELAY_1.START" Source="E_SWITCH_1_1.EO0"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1.EI" Source="E_CTU_1.CUO"/>
+      <Connection Comment="" Destination="E_CTU_1.CU" Source="E_SWITCH_2.EO0" dx1="310.0"/>
+      <Connection Comment="" Destination="InitFlagUnReg.R" Source="E_SWITCH_2.EO1" dx1="260.0" dx2="60.0" dy="-1565.0"/>
+      <Connection Comment="" Destination="registerService.doneUnregister" Source="E_SWITCH_2.EO1" dx1="270.0" dx2="60.0" dy="770.0"/>
+      <Connection Comment="" Destination="E_SWITCH_2.EI" Source="Unregister.CNF"/>
+      <Connection Comment="" Destination="Unregister.REQ" Source="E_DELAY_1.EO" dx1="60.0" dx2="60.0" dy="-775.0"/>
+      <Connection Comment="" Destination="InitFlagUnReg.R" Source="E_SWITCH_1_1.EO1" dx1="60.0" dx2="60.0" dy="1160.0"/>
+      <Connection Comment="" Destination="InitFlagReg.R" Source="E_SWITCH_1.EO1" dx1="60.0" dx2="230.0" dy="-1450.0"/>
+      <Connection Comment="" Destination="registerService.doneUnregister" Source="E_SWITCH_1_1.EO1" dx1="330.0" dx2="60.0" dy="1800.0"/>
+      <Connection Comment="" Destination="registerService.doneRegister" Source="E_SWITCH_1.EO1" dx1="270.0" dx2="490.0" dy="-2080.0"/>
+      <Connection Comment="" Destination="E_CTU_1.R" Source="E_SWITCH_1_1.EO1" dx1="60.0" dx2="60.0" dy="-505.0"/>
+      <Connection Comment="" Destination="E_CTU_1.R" Source="E_SWITCH_2.EO1" dx1="310.0"/>
+      <Connection Comment="" Destination="E_CTU.R" Source="E_SWITCH.EO1" dx1="310.0"/>
+      <Connection Comment="" Destination="E_CTU.R" Source="E_SWITCH_1.EO1" dx1="60.0" dx2="60.0" dy="120.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="E_PERMIT.PERMIT" Source="InitFlagReg.Q" dx1="790.0"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="CreateRegisterID.OUT"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_1.IN" Source="CreateUnRegisterID.OUT"/>
+      <Connection Comment="" Destination="E_PERMIT_1.PERMIT" Source="InitFlagUnReg.Q" dx1="720.0"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="registerService.serviceRegistryEntry" dx1="2490.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.IN_2" Source="registerService.endpoint" dx1="755.0"/>
+      <Connection Comment="" Destination="CreateUnRegisterID.IN_2" Source="registerService.endpoint" dx1="765.0"/>
+      <Connection Comment="" Destination="Register.QI" Source="InitFlagReg.Q" dx1="1105.0"/>
+      <Connection Comment="" Destination="Register.ID" Source="F_STRING_TO_WSTRING.OUT"/>
+      <Connection Comment="" Destination="Register.SD_1" Source="ANYToJSON.output" dx1="2355.0"/>
+      <Connection Comment="" Destination="Unregister.QI" Source="InitFlagUnReg.Q" dx1="725.0"/>
+      <Connection Comment="" Destination="Unregister.ID" Source="F_STRING_TO_WSTRING_1.OUT"/>
+      <Connection Comment="" Destination="Unregister.SD_1" Source="ANYToJSON.output" dx1="2355.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1.G" Source="E_CTU.Q"/>
+      <Connection Comment="" Destination="E_SWITCH.G" Source="Register.QO" dx1="410.0"/>
+      <Connection Comment="" Destination="E_SWITCH_1_1.G" Source="E_CTU_1.Q"/>
+      <Connection Comment="" Destination="E_SWITCH_2.G" Source="Unregister.QO" dx1="425.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceOpcUaOriginal.fbt b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceOpcUaOriginal.fbt
new file mode 100644
index 0000000..d460c4b
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServiceOpcUaOriginal.fbt
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<FBType Comment="Register Service using OPC UA" Name="RegisterServiceOpcUaOriginal">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH&#13;&#10; &#13;&#10;This program and the accompanying materials are made&#13;&#10;available under the terms of the Eclipse Public License 2.0&#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/&#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <InterfaceList>
+    <EventOutputs>
+      <Event Comment="" Name="registryDone" Type="Event">
+        <With Var="registryStatus"/>
+      </Event>
+    </EventOutputs>
+    <OutputVars>
+      <VarDeclaration Comment="" Name="registryStatus" Type="STRING"/>
+    </OutputVars>
+    <Sockets>
+      <AdapterDeclaration Comment="Register Service adapter" Name="registerService" Type="RegisterServiceAdp" x="-155.0" y="1810.0"/>
+    </Sockets>
+  </InterfaceList>
+  <FBNetwork>
+    <FB Comment="" Name="CreateRegisterID" Type="APPEND_STRING_3" x="3400.0" y="900.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua["/>
+      <Parameter Name="IN_3" Value="STRING##(2:,register,)]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING" Type="F_STRING_TO_WSTRING" x="4600.0" y="900.0"/>
+    <FB Comment="" Name="CreateUnRegisterID" Type="APPEND_STRING_3" x="3400.0" y="3000.0">
+      <Parameter Name="IN_1" Value="STRING#opc_ua["/>
+      <Parameter Name="IN_3" Value="STRING##(2:,remove,)]"/>
+    </FB>
+    <FB Comment="" Name="F_STRING_TO_WSTRING_1" Type="F_STRING_TO_WSTRING" x="4585.0" y="3000.0"/>
+    <FB Comment="" Name="ANYToJSON" Type="ANYToJSON" x="6000.0" y="1905.0"/>
+    <FB Comment="" Name="CLIENT_1_0" Type="CLIENT_1_0" x="10100.0" y="2000.0">
+      <Parameter Name="QI" Value="1"/>
+    </FB>
+    <FB Comment="" Name="CLIENT_1_0_1" Type="CLIENT_1" x="10800.0" y="700.0">
+      <Parameter Name="QI" Value="1"/>
+    </FB>
+    <FB Comment="" Name="STRING2STRING" Type="STRING2STRING" x="11700.0" y="800.0"/>
+    <FB Comment="" Name="E_DELAY" Type="E_DELAY" x="10000.0" y="300.0">
+      <Parameter Name="DT" Value="T#1s"/>
+    </FB>
+    <FB Comment="" Name="E_DELAY_1" Type="E_DELAY" x="9300.0" y="1400.0">
+      <Parameter Name="DT" Value="T#1s"/>
+    </FB>
+    <EventConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.REQ" Source="CreateRegisterID.CNF"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_1.REQ" Source="CreateUnRegisterID.CNF"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING.CNF" dx1="265.0"/>
+      <Connection Comment="" Destination="ANYToJSON.REQ" Source="F_STRING_TO_WSTRING_1.CNF" dx1="260.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.REQ" Source="registerService.registerService" dx1="1185.0"/>
+      <Connection Comment="" Destination="CreateUnRegisterID.REQ" Source="registerService.unregisterService" dx1="1185.0"/>
+      <Connection Comment="" Destination="registerService.doneUnregister" Source="CLIENT_1_0.CNF" dx1="570.0" dx2="60.0" dy="1740.0"/>
+      <Connection Comment="" Destination="registerService.doneRegister" Source="CLIENT_1_0_1.CNF" dx1="60.0" dx2="60.0" dy="175.0"/>
+      <Connection Comment="" Destination="STRING2STRING.REQ" Source="CLIENT_1_0_1.CNF"/>
+      <Connection Comment="" Destination="registryDone" Source="STRING2STRING.CNF" dx1="60.0" dx2="60.0" dy="-440.0"/>
+      <Connection Comment="" Destination="CLIENT_1_0_1.REQ" Source="E_DELAY.EO" dx1="195.0"/>
+      <Connection Comment="" Destination="E_DELAY.START" Source="CLIENT_1_0_1.INITO" dx1="60.0" dx2="60.0" dy="-200.0"/>
+      <Connection Comment="" Destination="CLIENT_1_0_1.INIT" Source="F_STRING_TO_WSTRING.CNF" dx1="2655.0"/>
+      <Connection Comment="" Destination="CLIENT_1_0.INIT" Source="F_STRING_TO_WSTRING_1.CNF" dx1="2300.0"/>
+      <Connection Comment="" Destination="E_DELAY_1.START" Source="CLIENT_1_0.INITO" dx1="60.0" dx2="330.0" dy="-160.0"/>
+      <Connection Comment="" Destination="CLIENT_1_0.REQ" Source="E_DELAY_1.EO" dx1="175.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING.IN" Source="CreateRegisterID.OUT"/>
+      <Connection Comment="" Destination="F_STRING_TO_WSTRING_1.IN" Source="CreateUnRegisterID.OUT"/>
+      <Connection Comment="" Destination="ANYToJSON.input" Source="registerService.serviceRegistryEntry" dx1="2595.0"/>
+      <Connection Comment="" Destination="CreateRegisterID.IN_2" Source="registerService.endpoint" dx1="755.0"/>
+      <Connection Comment="" Destination="CreateUnRegisterID.IN_2" Source="registerService.endpoint" dx1="765.0"/>
+      <Connection Comment="" Destination="CLIENT_1_0_1.ID" Source="F_STRING_TO_WSTRING.OUT"/>
+      <Connection Comment="" Destination="CLIENT_1_0_1.SD_1" Source="ANYToJSON.output" dx1="2355.0"/>
+      <Connection Comment="" Destination="STRING2STRING.IN" Source="CLIENT_1_0_1.RD_1" dx1="235.0"/>
+      <Connection Comment="" Destination="registryStatus" Source="STRING2STRING.OUT" dx1="60.0" dx2="60.0" dy="-515.0"/>
+      <Connection Comment="" Destination="CLIENT_1_0.ID" Source="F_STRING_TO_WSTRING_1.OUT" dx1="2300.0"/>
+      <Connection Comment="" Destination="CLIENT_1_0.SD_1" Source="ANYToJSON.output" dx1="1800.0"/>
+    </DataConnections>
+  </FBNetwork>
+</FBType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServicePartialOpcUa.SUB b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServicePartialOpcUa.SUB
new file mode 100644
index 0000000..4524b71
--- /dev/null
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/OpcUa/RegisterServicePartialOpcUa.SUB
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE SubAppType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
+<SubAppType Comment="Register a Service using OPC UA. The system information is encapsulated" Name="RegisterServicePartialOpcUa">
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
+  <VersionInfo Author="Jose Cabral" Date="2019-09-17" Organization="fortiss GmbH" Version="1.0"/>
+  <SubAppInterfaceList>
+    <SubAppEventInputs>
+      <SubAppEvent Comment="Register the service" Name="register" Type="Event"/>
+      <SubAppEvent Comment="Unregister the service" Name="unregister" Type="Event"/>
+    </SubAppEventInputs>
+    <SubAppEventOutputs>
+      <SubAppEvent Comment="Register finished" Name="doneRegister" Type="Event"/>
+      <SubAppEvent Comment="Unregister finished" Name="doneUnregister" Type="Event"/>
+    </SubAppEventOutputs>
+    <InputVars>
+      <VarDeclaration Comment="The Arrowhead Service object that is provided (SD and supported IDD-s)" Name="providedService" Type="ArrowheadService"/>
+      <VarDeclaration Comment="ArrowheadSystem that is providing the Service" Name="provider" Type="ArrowheadSystem"/>
+      <VarDeclaration Comment="The URL subpath of the Service within the address:port of the Provider" Name="serviceURI" Type="WSTRING"/>
+      <VarDeclaration Comment="The version numbering of the Service provided" Name="version" Type="DINT"/>
+      <VarDeclaration Comment="True, if the service is provided via UDP. By default, it is false" Name="udp" Type="BOOL"/>
+      <VarDeclaration Comment="Service validity time period expressed in seconds. This gets converted to a date-time, and stored in the database" Name="ttl" Type="DINT"/>
+      <VarDeclaration Comment="Metadata belonging to a service/provider pair" Name="metadata" Type="WSTRING"/>
+      <VarDeclaration Comment="Endpoint (IP:PORT/URI) of the Service Registry" Name="SRendpoint" Type="WSTRING"/>
+    </InputVars>
+  </SubAppInterfaceList>
+  <SubAppNetwork>
+    <FB Comment="" Name="FieldsToServiceRegistryEntry" Type="FieldsToServiceRegistryEntry" x="5420.0" y="1385.0"/>
+    <FB Comment="" Name="RegisterService" Type="RegisterService" x="8640.0" y="2490.0"/>
+    <FB Comment="" Name="E_SR" Type="E_SR" x="6365.0" y="-135.0"/>
+    <FB Comment="" Name="E_SWITCH" Type="E_SWITCH" x="7880.0" y="415.0"/>
+    <FB Comment="" Name="E_REND" Type="E_REND" x="7210.0" y="270.0"/>
+    <FB Comment="" Name="RegisterServiceOpcUa" Type="RegisterServiceOpcUa" x="10525.0" y="3290.0"/>
+    <EventConnections>
+      <Connection Comment="" Destination="doneRegister" Source="RegisterService.doneRegister" dx1="60.0" dx2="60.0" dy="-1285.0"/>
+      <Connection Comment="" Destination="doneUnregister" Source="RegisterService.doneUnregister" dx1="60.0" dx2="60.0" dy="-1285.0"/>
+      <Connection Comment="" Destination="RegisterService.register" Source="E_SWITCH.EO1" dx1="80.0"/>
+      <Connection Comment="" Destination="RegisterService.unregister" Source="E_SWITCH.EO0" dx1="225.0"/>
+      <Connection Comment="" Destination="E_SR.S" Source="register" dx1="2855.0"/>
+      <Connection Comment="" Destination="E_SR.R" Source="unregister" dx1="2855.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.REQ" Source="register" dx1="2420.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.REQ" Source="unregister" dx1="2420.0"/>
+      <Connection Comment="" Destination="E_REND.EI1" Source="register" dx1="3315.0"/>
+      <Connection Comment="" Destination="E_REND.EI1" Source="unregister" dx1="3315.0"/>
+      <Connection Comment="" Destination="E_REND.EI2" Source="FieldsToServiceRegistryEntry.CNF" dx1="60.0" dx2="60.0" dy="-505.0"/>
+      <Connection Comment="" Destination="E_SWITCH.EI" Source="E_REND.EO" dx1="150.0"/>
+      <Connection Comment="" Destination="E_REND.R" Source="E_REND.EO" dx1="85.0" dx2="175.0" dy="-370.0"/>
+    </EventConnections>
+    <DataConnections>
+      <Connection Comment="" Destination="RegisterService.serviceRegistryEntry" Source="FieldsToServiceRegistryEntry.serviceRegistryEntry" dx1="665.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.serviceURI" Source="serviceURI" dx1="615.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.version" Source="version" dx1="485.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.ttl" Source="ttl" dx1="275.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.metadata" Source="metadata" dx1="175.0"/>
+      <Connection Comment="" Destination="RegisterService.endpoint" Source="SRendpoint" dx1="90.0"/>
+      <Connection Comment="" Destination="E_SWITCH.G" Source="E_SR.Q" dx1="205.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.udp" Source="udp" dx1="375.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.provider" Source="provider" dx1="3285.0"/>
+      <Connection Comment="" Destination="FieldsToServiceRegistryEntry.providedService" Source="providedService" dx1="2420.0"/>
+    </DataConnections>
+    <AdapterConnections>
+      <Connection Comment="" Destination="RegisterServiceOpcUa.registerService" Source="RegisterService.registerService" dx1="95.0"/>
+    </AdapterConnections>
+  </SubAppNetwork>
+</SubAppType>
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/ServiceQueryForm.dtp b/data/typelibrary/Arrowhead/ServiceRegistry/ServiceQueryForm.dtp
index 174dd6d..e41ac01 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/ServiceQueryForm.dtp
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/ServiceQueryForm.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="ServiceQueryForm" Comment="A service query form for the Arrowhead framework 4.0" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry.dtp b/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry.dtp
index 40fd327..b53090f 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry.dtp
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="ServiceRegistryEntry" Comment="A service registry entry for the Arrowhead framework 4.0" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry2ServiceRegistryEntry.fbt b/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry2ServiceRegistryEntry.fbt
index e1eab2c..920789f 100644
--- a/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry2ServiceRegistryEntry.fbt
+++ b/data/typelibrary/Arrowhead/ServiceRegistry/ServiceRegistryEntry2ServiceRegistryEntry.fbt
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE FBType SYSTEM "http://www.holobloc.com/xml/LibraryElement.dtd">
 <FBType Comment="Helper FB to set the connection to a Service Registry Entry type" Name="ServiceRegistryEntry2ServiceRegistryEntry">
-  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: PL-2.0" Standard="61499-2"/>
+  <Identification Description="Copyright (c) 2019 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Author="Jose Cabral" Date="2019-01-28" Organization="fortiss GmbH" Version="1.0"/>
   <InterfaceList>
     <EventInputs>
diff --git a/data/typelibrary/Arrowhead/common/ArrowheadCloud.dtp b/data/typelibrary/Arrowhead/common/ArrowheadCloud.dtp
index 8aa45c9..44e75d1 100644
--- a/data/typelibrary/Arrowhead/common/ArrowheadCloud.dtp
+++ b/data/typelibrary/Arrowhead/common/ArrowheadCloud.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="ArrowheadCloud" Comment="A cloud representation for the Arrowhead framework 4.0" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2018 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/data/typelibrary/Arrowhead/common/ArrowheadService.dtp b/data/typelibrary/Arrowhead/common/ArrowheadService.dtp
index 6820e7f..28a298d 100644
--- a/data/typelibrary/Arrowhead/common/ArrowheadService.dtp
+++ b/data/typelibrary/Arrowhead/common/ArrowheadService.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="ArrowheadService" Comment="A service representation for the Arrowhead framework 4.0" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2018 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/data/typelibrary/Arrowhead/common/ArrowheadSystem.dtp b/data/typelibrary/Arrowhead/common/ArrowheadSystem.dtp
index 7fb9bdd..3f80a52 100644
--- a/data/typelibrary/Arrowhead/common/ArrowheadSystem.dtp
+++ b/data/typelibrary/Arrowhead/common/ArrowheadSystem.dtp
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE DataType SYSTEM "http://www.holobloc.com/xml/DataType.dtd" >
 <DataType Name="ArrowheadService" Comment="A service representation for the Arrowhead framework 4.0" >
-  <Identification Standard="61499-2" />
+  <Identification Description="Copyright (c) 2018 fortiss GmbH &#13;&#10;&#13;&#10;This program and the accompanying materials are made &#13;&#10;available under the terms of the Eclipse Public License 2.0 &#13;&#10;which is available at https://www.eclipse.org/legal/epl-2.0/ &#13;&#10;&#13;&#10;SPDX-License-Identifier: EPL-2.0" Standard="61499-2"/>
   <VersionInfo Organization="fortiss GmbH" Version="1.0" Author="Jose Cabral" Date="2018-09-26" />
   <ASN1Tag Class="APPLICATION" Number="1" />
   <StructuredType >
diff --git a/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml b/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
index 0bb4867..1078feb 100644
--- a/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
+++ b/features/org.eclipse.fordiac.ide.workbench.feature/feature.xml
@@ -453,4 +453,11 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.fordiac.ide.metrics"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/Messages.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/Messages.java
index 6707d43..a143741 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/Messages.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/Messages.java
@@ -110,6 +110,34 @@
 
 	public static String SaveAsSubApplicationTypeAction_WizardOverrideMessage;
 
+	public static String UnmapAllAction_Text;
+
+	public static String UpdateFBTypeAction_Text;
+
+	public static String ConnectionConstraintsPrefernecePage_Description;
+
+	public static String ConnectionConstraintsPrefernecePage_EnableFORTETypeCasts;
+
+	public static String InterfaceElementSection_ConnectionGroup;
+
+	public static String CopyEditPartsAction_Text;
+
+	public static String PasteEditPartsAction_Text;
+
+	public static String ListFBCreateCommand_FBTypeNotFound;
+
+	public static String UIFBNetworkContextMenuProvider_InsertFB;
+
+	public static String UIFBNetworkContextMenuProvider_ChangeType;
+
+	public static String FBNetworkElementTooltipFigure_VersionLabel;
+
+	public static String InterfaceElementSection_DeleteConnectionToolTip;
+
+	public static String InterfaceElementSection_InConnections;
+
+	public static String InterfaceElementSection_OutConnections;
+
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/CopyEditPartsAction.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/CopyEditPartsAction.java
index f2f2dd4..bbe7128 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/CopyEditPartsAction.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/CopyEditPartsAction.java
@@ -18,6 +18,7 @@
 import java.util.List;
 
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.fordiac.ide.application.Messages;
 import org.eclipse.fordiac.ide.model.libraryElement.Connection;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
 import org.eclipse.gef.EditPart;
@@ -35,10 +36,7 @@
 /**
  * The Class CopyEditPartsAction.
  */
-public class CopyEditPartsAction extends WorkbenchPartAction implements
-		ISelectionChangedListener {
-
-	private static final String COPY = "Copy";
+public class CopyEditPartsAction extends WorkbenchPartAction implements ISelectionChangedListener {
 
 	/** The templates. */
 	private List<EObject> templates = null;
@@ -51,10 +49,10 @@
 	public CopyEditPartsAction(IEditorPart editor) {
 		super(editor);
 		setId(ActionFactory.COPY.getId());
-		setText(COPY);		
-		ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages(); 
+		setText(Messages.CopyEditPartsAction_Text);
+		ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
 		setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
-	    setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED));
+		setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED));
 	}
 
 	/*
@@ -70,8 +68,7 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see
-	 * org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org
+	 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org
 	 * .eclipse.jface.viewers.SelectionChangedEvent)
 	 */
 	@Override
@@ -89,15 +86,17 @@
 			Object obj = iter.next();
 			if (obj instanceof EditPart) {
 				Object model = ((EditPart) obj).getModel();
-				if ((model instanceof FBNetworkElement)|| (model instanceof Connection)){
+				if ((model instanceof FBNetworkElement) || (model instanceof Connection)) {
 					templates.add((EObject) model);
-				} 
+				}
 			}
 		}
 		refresh();
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.jface.action.Action#run()
 	 */
 	@Override
@@ -105,7 +104,9 @@
 		Clipboard.getDefault().setContents(templates);
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.gef.ui.actions.WorkbenchPartAction#dispose()
 	 */
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/PasteEditPartsAction.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/PasteEditPartsAction.java
index 17c9d65..184ef42 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/PasteEditPartsAction.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/PasteEditPartsAction.java
@@ -18,6 +18,7 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.fordiac.ide.application.Messages;
 import org.eclipse.fordiac.ide.application.commands.PasteCommand;
 import org.eclipse.fordiac.ide.application.editors.FBNetworkEditor;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
@@ -36,8 +37,6 @@
  */
 public class PasteEditPartsAction extends SelectionAction {
 
-	private static final String PASTE_TEXT = "Paste";
-
 	private Point pasteRefPosition;
 
 	/**
@@ -76,7 +75,7 @@
 	@Override
 	protected void init() {
 		setId(ActionFactory.PASTE.getId());
-		setText(PASTE_TEXT);
+		setText(Messages.PasteEditPartsAction_Text);
 		ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
 		setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
 		setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED));
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UnmapAllAction.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UnmapAllAction.java
index f5eafce..e902526 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UnmapAllAction.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UnmapAllAction.java
@@ -13,13 +13,14 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.application.actions;
 
+import org.eclipse.fordiac.ide.application.Messages;
 import org.eclipse.fordiac.ide.gef.DiagramEditorWithFlyoutPalette;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
 import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
 import org.eclipse.ui.IWorkbenchPart;
 
 public class UnmapAllAction extends UnmapAction {
-	
+
 	/** The Constant ID. */
 	public static final String ID = "UnmapAll"; //$NON-NLS-1$
 
@@ -31,20 +32,19 @@
 	public UnmapAllAction(final IWorkbenchPart part) {
 		super(part);
 		setId(ID);
-		setText("Unmap All");
+		setText(Messages.UnmapAllAction_Text);
 	}
-	
 
 	@Override
 	protected boolean calculateEnabled() {
-		if(!super.calculateEnabled()){
-			FBNetwork fbNetwork = (FBNetwork)((DiagramEditorWithFlyoutPalette)getWorkbenchPart()).getModel();
-			for(FBNetworkElement element : fbNetwork.getNetworkElements()){
+		if (!super.calculateEnabled()) {
+			FBNetwork fbNetwork = (FBNetwork) ((DiagramEditorWithFlyoutPalette) getWorkbenchPart()).getModel();
+			for (FBNetworkElement element : fbNetwork.getNetworkElements()) {
 				checkSelectedModelElement(element);
 			}
 			return (!getSelectedNetworkElements().isEmpty());
 		}
 		return false;
 	}
-	
+
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UpdateFBTypeAction.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UpdateFBTypeAction.java
index b68eb88..7b53a40 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UpdateFBTypeAction.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/actions/UpdateFBTypeAction.java
@@ -15,6 +15,7 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.application.actions;
 
+import org.eclipse.fordiac.ide.application.Messages;
 import org.eclipse.fordiac.ide.application.editparts.AbstractFBNElementEditPart;
 import org.eclipse.fordiac.ide.model.Palette.PaletteEntry;
 import org.eclipse.fordiac.ide.model.commands.change.UpdateFBTypeCommand;
@@ -31,14 +32,14 @@
 
 	/** The Constant ID. */
 	public static final String ID = "UpdateFBTypeAction"; //$NON-NLS-1$
-	
+
 	/** FB type */
 	private PaletteEntry entry;
 
 	public UpdateFBTypeAction(IWorkbenchPart part) {
 		super(part);
 		setId(ID);
-		setText("Update Type");
+		setText(Messages.UpdateFBTypeAction_Text);
 		entry = null;
 	}
 
@@ -55,8 +56,8 @@
 	 * @see org.eclipse.gef.ui.actions.WorkbenchPartAction#calculateEnabled()
 	 */
 	@Override
-	protected boolean calculateEnabled() {	
-		for(Object selected : getSelectedObjects()){		
+	protected boolean calculateEnabled() {
+		for (Object selected : getSelectedObjects()) {
 			if (selected instanceof AbstractFBNElementEditPart) {
 				return null != ((AbstractFBNElementEditPart) selected).getModel().getType();
 			}
@@ -72,7 +73,7 @@
 	@Override
 	public void run() {
 		CompoundCommand updateCmd = new CompoundCommand();
-		for(Object obj : getSelectedObjects()){
+		for (Object obj : getSelectedObjects()) {
 			if (obj instanceof AbstractFBNElementEditPart) {
 				UpdateFBTypeCommand cmd = new UpdateFBTypeCommand(((AbstractFBNElementEditPart) obj).getModel(), entry);
 				if (cmd.canExecute()) {
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/ListFBCreateCommand.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/ListFBCreateCommand.java
index 03388e9..fdce995 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/ListFBCreateCommand.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/commands/ListFBCreateCommand.java
@@ -15,6 +15,7 @@
 
 import java.util.List;
 
+import org.eclipse.fordiac.ide.application.Messages;
 import org.eclipse.fordiac.ide.application.utilities.CreationPopupDialog;
 import org.eclipse.fordiac.ide.application.utilities.ICreationExecutor;
 import org.eclipse.fordiac.ide.model.Palette.FBTypePaletteEntry;
@@ -42,25 +43,20 @@
 	/**
 	 * Instantiates a new fB create command.
 	 * 
-	 * @param type
-	 *            the type
-	 * @param parent
-	 *            the parent
-	 * @param bounds
-	 *            the bounds
+	 * @param type   the type
+	 * @param parent the parent
+	 * @param bounds the bounds
 	 */
-	public ListFBCreateCommand(final FBTypePaletteEntry[] type,
-			final FBNetwork parent, int x, int y) {
+	public ListFBCreateCommand(final FBTypePaletteEntry[] type, final FBNetwork parent, int x, int y) {
 		super(null, parent, x, y); // values will be set in execute()
 		typeList = type.clone();
 		selectionList = null;
 		system = parent.getAutomationSystem();
 	}
 
-	public ListFBCreateCommand(final TransferDataSelectionOfFb[] fbList,
-			final FBNetwork parent, int x, int y) {
+	public ListFBCreateCommand(final TransferDataSelectionOfFb[] fbList, final FBNetwork parent, int x, int y) {
 		super(null, parent, x, y); // values will be set in execute()
-		typeList = null; 
+		typeList = null;
 		selectionList = fbList.clone();
 		this.system = parent.getAutomationSystem();
 	}
@@ -70,16 +66,15 @@
 		if (typeList != null) {
 			return typeList.length != 0;
 		} else if (selectionList != null) {
-			return selectionList.length != 0 ;
+			return selectionList.length != 0;
 		}
 		return false;
 	}
 
 	private void executeTransferData() {
 
-		CreationPopupDialog pd = new CreationPopupDialog(Display.getCurrent()
-				.getActiveShell(), PopupDialog.HOVER_SHELLSTYLE, true,
-				false, false, false, false, null, null, typeList,
+		CreationPopupDialog pd = new CreationPopupDialog(Display.getCurrent().getActiveShell(),
+				PopupDialog.HOVER_SHELLSTYLE, true, false, false, false, false, null, null, typeList,
 				new LabelProvider() {
 					@Override
 					public String getText(Object element) {
@@ -97,7 +92,7 @@
 						return super.getImage(element);
 					}
 				}, new ICreationExecutor() {
-					
+
 					@Override
 					public void execute(Object res) {
 						if (res instanceof TransferDataSelectionOfFb) {
@@ -110,15 +105,17 @@
 								ListFBCreateCommand.super.execute();
 
 								for (TransferDataSelectionFBParameter fbParametert : element.getFbParameters()) {
-									IInterfaceElement fbInterfaceElement = ListFBCreateCommand.this.getElement().getInterfaceElement(fbParametert.getName());
-									if (fbInterfaceElement instanceof VarDeclaration){
-										Value val = ((VarDeclaration)fbInterfaceElement).getValue();
+									IInterfaceElement fbInterfaceElement = ListFBCreateCommand.this.getElement()
+											.getInterfaceElement(fbParametert.getName());
+									if (fbInterfaceElement instanceof VarDeclaration) {
+										Value val = ((VarDeclaration) fbInterfaceElement).getValue();
 										val.setValue(fbParametert.getValue());
 									}
 								}
 							} else {
 								// warning/info in statusline that fbtype can not be found
-								Abstract4DIACUIPlugin.statusLineErrorMessage("FBType not found!");
+								Abstract4DIACUIPlugin
+										.statusLineErrorMessage(Messages.ListFBCreateCommand_FBTypeNotFound);
 							}
 						}
 
@@ -132,9 +129,8 @@
 
 	private void executeFBTypePalette() {
 
-		CreationPopupDialog pd = new CreationPopupDialog(Display.getCurrent()
-				.getActiveShell(), PopupDialog.HOVER_SHELLSTYLE, true,
-				false, false, false, false, null, null, typeList,
+		CreationPopupDialog pd = new CreationPopupDialog(Display.getCurrent().getActiveShell(),
+				PopupDialog.HOVER_SHELLSTYLE, true, false, false, false, false, null, null, typeList,
 				new LabelProvider() {
 					@Override
 					public String getText(Object element) {
@@ -152,7 +148,7 @@
 						return super.getImage(element);
 					}
 				}, new ICreationExecutor() {
-					
+
 					@Override
 					public void execute(Object res) {
 						if (res instanceof FBTypePaletteEntry) {
@@ -165,7 +161,6 @@
 		};
 		pd.open();
 
-
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editors/UIFBNetworkContextMenuProvider.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editors/UIFBNetworkContextMenuProvider.java
index c121b18..90c70da 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editors/UIFBNetworkContextMenuProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editors/UIFBNetworkContextMenuProvider.java
@@ -183,11 +183,11 @@
 	@SuppressWarnings("rawtypes")
 	private void createFBMenus(final IMenuManager menu) {
 		useChangeFBType = false;
-		String text = "Insert FB";
+		String text = Messages.UIFBNetworkContextMenuProvider_InsertFB;
 		List eps = editor.getViewer().getSelectedEditParts();
 		for (Object ep : eps) {
-			if ((ep instanceof FBEditPart) || (ep instanceof SubAppForFBNetworkEditPart)) {
-				text = "Change Type";
+			if (ep instanceof FBEditPart || ep instanceof SubAppForFBNetworkEditPart) {
+				text = Messages.UIFBNetworkContextMenuProvider_ChangeType;
 				useChangeFBType = true;
 				break;
 			}
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/ConnectionEditPart.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/ConnectionEditPart.java
index 6cc5086..43ade29 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/ConnectionEditPart.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/editparts/ConnectionEditPart.java
@@ -1,7 +1,7 @@
 /*******************************************************************************

  * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH, AIT,

  * 							 Johannes Kepler University

- * 

+ *

  * This program and the accompanying materials are made available under the

  * terms of the Eclipse Public License 2.0 which is available at

  * http://www.eclipse.org/legal/epl-2.0.

@@ -9,8 +9,8 @@
  * SPDX-License-Identifier: EPL-2.0

  *

  * Contributors:

- *   Gerhard Ebenhofer, Alois Zoitl, Monika Wenger, Gerd Kainz, 

- *   Filip Pröstl-Andren 

+ *   Gerhard Ebenhofer, Alois Zoitl, Monika Wenger, Gerd Kainz,

+ *   Filip Pröstl-Andren

  *   - initial API and implementation and/or initial documentation

  *******************************************************************************/

 package org.eclipse.fordiac.ide.application.editparts;

@@ -26,8 +26,8 @@
 import org.eclipse.fordiac.ide.application.policies.ConnectionGraphicalNodeEditPolicy;

 import org.eclipse.fordiac.ide.application.policies.DeleteConnectionEditPolicy;

 import org.eclipse.fordiac.ide.application.policies.DisableConnectionHandleRoleEditPolicy;

-import org.eclipse.fordiac.ide.application.policies.FeedbackConnectionEndpointEditPolicy;

 import org.eclipse.fordiac.ide.gef.figures.HideableConnection;

+import org.eclipse.fordiac.ide.gef.policies.FeedbackConnectionEndpointEditPolicy;

 import org.eclipse.fordiac.ide.gef.router.BendpointPolicyRouter;

 import org.eclipse.fordiac.ide.gef.router.RouterUtil;

 import org.eclipse.fordiac.ide.model.libraryElement.AdapterConnection;

@@ -60,19 +60,25 @@
 	private final IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener() {

 		@Override

 		public void propertyChange(PropertyChangeEvent event) {

-			if (event.getProperty().equals(PreferenceConstants.P_EVENT_CONNECTOR_COLOR) &&  getModel() instanceof EventConnection) {

+			if (event.getProperty().equals(PreferenceConstants.P_EVENT_CONNECTOR_COLOR)

+					&& getModel() instanceof EventConnection) {

 				getFigure().setForegroundColor(PreferenceGetter.getColor(PreferenceConstants.P_EVENT_CONNECTOR_COLOR));

 			}

-			if (event.getProperty().equals(PreferenceConstants.P_ADAPTER_CONNECTOR_COLOR) && getModel() instanceof AdapterConnection) {

-				getFigure().setForegroundColor(PreferenceGetter.getColor(PreferenceConstants.P_ADAPTER_CONNECTOR_COLOR));

+			if (event.getProperty().equals(PreferenceConstants.P_ADAPTER_CONNECTOR_COLOR)

+					&& getModel() instanceof AdapterConnection) {

+				getFigure()

+						.setForegroundColor(PreferenceGetter.getColor(PreferenceConstants.P_ADAPTER_CONNECTOR_COLOR));

 			}

-			if (event.getProperty().equals(PreferenceConstants.P_DATA_CONNECTOR_COLOR) && getModel() instanceof DataConnection) {

+			if (event.getProperty().equals(PreferenceConstants.P_DATA_CONNECTOR_COLOR)

+					&& getModel() instanceof DataConnection) {

 				getFigure().setForegroundColor(PreferenceGetter.getColor(PreferenceConstants.P_DATA_CONNECTOR_COLOR));

 			}

-			if (event.getProperty().equals(PreferenceConstants.P_HIDE_DATA_CON) && getModel() instanceof DataConnection) {

+			if (event.getProperty().equals(PreferenceConstants.P_HIDE_DATA_CON)

+					&& getModel() instanceof DataConnection) {

 				getFigure().setVisible(!((Boolean) event.getNewValue()));

 			}

-			if (event.getProperty().equals(PreferenceConstants.P_HIDE_EVENT_CON) && getModel() instanceof EventConnection) {

+			if (event.getProperty().equals(PreferenceConstants.P_HIDE_EVENT_CON)

+					&& getModel() instanceof EventConnection) {

 				getFigure().setVisible(!((Boolean) event.getNewValue()));

 			}

 		}

@@ -82,22 +88,18 @@
 	protected void createEditPolicies() {

 		// Selection handle edit policy.

 		// Makes the connection show a feedback, when selected by the user.

-		installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,

-				new FeedbackConnectionEndpointEditPolicy());

-		installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,

-				new DisableConnectionHandleRoleEditPolicy());

+		installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new FeedbackConnectionEndpointEditPolicy());

+		installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new DisableConnectionHandleRoleEditPolicy());

 

 		// Allows the removal of the connection model element

-		installEditPolicy(EditPolicy.CONNECTION_ROLE,

-				new DeleteConnectionEditPolicy());

+		installEditPolicy(EditPolicy.CONNECTION_ROLE, new DeleteConnectionEditPolicy());

 

 		if (getConnectionFigure().getConnectionRouter() instanceof BendpointPolicyRouter) {

 			installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE,

-					((BendpointPolicyRouter) getConnectionFigure()

-							.getConnectionRouter())

+					((BendpointPolicyRouter) getConnectionFigure().getConnectionRouter())

 							.getBendpointPolicy(getModel()));

 		}

-		

+

 		installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new ConnectionGraphicalNodeEditPolicy());

 	}

 

@@ -107,8 +109,7 @@
 

 		String status = getModel().getAttributeValue(HIDEN_CON);

 		if (connection instanceof HideableConnection) {

-			((HideableConnection) connection)

-					.setHidden((status != null && status.equalsIgnoreCase(HIDDEN) ? true : false));

+			((HideableConnection) connection).setHidden(status != null && status.equalsIgnoreCase(HIDDEN));

 			if (getModel() != null && getModel().getSourceElement() != null) {

 				((HideableConnection) connection)

 						.setLabel(getModel().getSourceElement().getName() + "." + getModel().getSource().getName()); //$NON-NLS-1$

diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/figures/FBNetworkElementTooltipFigure.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/figures/FBNetworkElementTooltipFigure.java
index 56515bf..109dc35 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/figures/FBNetworkElementTooltipFigure.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/figures/FBNetworkElementTooltipFigure.java
@@ -49,49 +49,41 @@
 
 		Label instanceNameLabel = new Label(element.getName());
 		add(instanceNameLabel);
-		setConstraint(instanceNameLabel, new GridData(PositionConstants.CENTER,
-				PositionConstants.MIDDLE, true, true));
-		
+		setConstraint(instanceNameLabel, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));
+
 		craeteTypeAndVersionLabel(element);
-		
+
 		Figure line = new VerticalLineCompartmentFigure();
 		add(line);
-		setConstraint(line, new GridData(PositionConstants.CENTER,
-				PositionConstants.MIDDLE, true, true));
-
+		setConstraint(line, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));
 
 		if (element.getComment() != null && element.getComment().length() > 0) {
 			FlowPage fp = new FlowPage();
 			TextFlow content = new TextFlow(element.getComment());
-			content.setLayoutManager(new ParagraphTextLayout(content,
-					ParagraphTextLayout.WORD_WRAP_HARD));
+			content.setLayoutManager(new ParagraphTextLayout(content, ParagraphTextLayout.WORD_WRAP_HARD));
 			fp.add(content);
 			line.add(fp);
-			line.setConstraint(fp, new GridData(PositionConstants.CENTER,
-					PositionConstants.MIDDLE, false, true));
+			line.setConstraint(fp, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, false, true));
 		}
 
 		FBNetwork fbNetwork = (FBNetwork) element.eContainer();
 
 		Application app = (null != fbNetwork) ? (fbNetwork.getApplication()) : null;
-		if (app != null
-				&& app.eContainer() instanceof org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem) {
+		if (app != null && app.eContainer() instanceof org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem) {
 
-			Label system = new Label(Messages.FBTooltipFigure_LABEL_System
-					+ ((AutomationSystem) app.eContainer()).getName());
+			Label system = new Label(
+					Messages.FBTooltipFigure_LABEL_System + ((AutomationSystem) app.eContainer()).getName());
 			line.add(system);
-			line.setConstraint(system, new GridData(PositionConstants.CENTER,
-					PositionConstants.MIDDLE, true, true));
+			line.setConstraint(system, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));
 		}
 		if (app != null) {
-			Label application = new Label(
-					Messages.FBTooltipFigure_LABEL_Application + app.getName());
+			Label application = new Label(Messages.FBTooltipFigure_LABEL_Application + app.getName());
 			line.add(application);
-			line.setConstraint(application, new GridData(PositionConstants.CENTER,
-					PositionConstants.MIDDLE, true, true));
+			line.setConstraint(application,
+					new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));
 		}
-		
-		if(element.isMapped()) {
+
+		if (element.isMapped()) {
 			createMappingInfo(element, line);
 		}
 	}
@@ -100,32 +92,31 @@
 		Figure line = new VerticalLineCompartmentFigure();
 		parent.add(line);
 		parent.setConstraint(line, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));
-		
+
 		Resource res = element.getResource();
 		Device dev = res.getDevice();
-		
+
 		Label mappingLabel = new Label(
-				 MessageFormat.format(Messages.FBTooltipFigure_LABEL_MappedTo, dev.getName(), res.getName()));
+				MessageFormat.format(Messages.FBTooltipFigure_LABEL_MappedTo, dev.getName(), res.getName()));
 		line.add(mappingLabel);
-		line.setConstraint(mappingLabel, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));		
+		line.setConstraint(mappingLabel, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));
 	}
 
 	private void craeteTypeAndVersionLabel(FBNetworkElement element) {
 		String labelText = Messages.FBFigure_TYPE_NOT_SET;
-		
+
 		LibraryElement type = element.getType();
 		if (type != null) {
 			labelText = type.getName();
 			if (!type.getVersionInfo().isEmpty() && null != type.getVersionInfo().get(0)) {
 				VersionInfo versionInfo = type.getVersionInfo().get(0);
-				labelText += " / Ver: " + versionInfo.getVersion();
+				labelText += Messages.FBNetworkElementTooltipFigure_VersionLabel + versionInfo.getVersion();
 			}
 		}
-		
+
 		Label typeVersionLabel = new Label(labelText);
 		add(typeVersionLabel);
-		setConstraint(typeVersionLabel, new GridData(PositionConstants.CENTER,
-				PositionConstants.MIDDLE, true, true));
-		
+		setConstraint(typeVersionLabel, new GridData(PositionConstants.CENTER, PositionConstants.MIDDLE, true, true));
+
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/messages.properties b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/messages.properties
index 58c5c99..17b01b5 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/messages.properties
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/messages.properties
@@ -10,6 +10,8 @@
  # Contributors:
  #   Gerhard Ebenhofer, Alois Zoitl, Monika Wenger
  #     - initial API and implementation and/or initial documentation
+ #   Andrea Zoitl
+ #     - Externalized all translatable strings 
  ###############################################################################
 FlattenSubAppCommand_LABEL_FlattenSubAppCommand=Flatten SubApplication Command
 NewSubApplicationAction_NewSubapplicationText=New Subapplication
@@ -42,8 +44,24 @@
 SaveAsSubApplicationTypeAction_WizardTitle=Save as Subapplication Type
 SaveAsSubApplicationTypeAction_WizardOverrideTitle=Subapplication Already Existing!
 SaveAsSubApplicationTypeAction_WizardOverrideMessage=Subapplication with given type name already exists. Do like to overwrite it?
-SaveAsSubApplicationTypeAction_WizardPageName=Save as subapp type page
+SaveAsSubApplicationTypeAction_WizardPageName=Save as Subapplication Type Page
 SaveAsSubApplicationTypeAction_WizardPageTitel=Save as Subapplication Type
 SaveAsSubApplicationTypeAction_WizardPageDescription=Save selected subapplication as type
 SaveAsSubApplicationTypeAction_WizardPageOpenType=Open type for editing when done
-SaveAsSubApplicationTypeAction_WizardPageNameLabel=Suapplication type name:
+SaveAsSubApplicationTypeAction_WizardPageNameLabel=Subapplication type name:
+UnmapAllAction_Text=Unmap All
+UpdateFBTypeAction_Text=Update Type
+ConnectionConstraintsPrefernecePage_Description=Preferences for Connections!
+ConnectionConstraintsPrefernecePage_EnableFORTETypeCasts=Enable FORTE TypeCasts
+InterfaceElementSection_ConnectionGroup=Connections
+CopyEditPartsAction_Text=Copy
+PasteEditPartsAction_Text=Paste
+ListFBCreateCommand_FBTypeNotFound=FBType not found!
+UIFBNetworkContextMenuProvider_InsertFB=Insert FB
+UIFBNetworkContextMenuProvider_ChangeType=Change Type
+FBNetworkElementTooltipFigure_VersionLabel= / Version: 
+InterfaceElementSection_DeleteConnectionToolTip=Delete Connection
+InterfaceElementSection_InConnections=In-Connections
+InterfaceElementSection_OutConnections=Out-Connections
+
+
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/DisableConnectionHandleRoleEditPolicy.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/DisableConnectionHandleRoleEditPolicy.java
index 7ca2e4f..e123111 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/DisableConnectionHandleRoleEditPolicy.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/DisableConnectionHandleRoleEditPolicy.java
@@ -15,6 +15,7 @@
 
 import org.eclipse.fordiac.ide.gef.editparts.IDeactivatableConnectionHandleRoleEditPart;
 import org.eclipse.fordiac.ide.gef.editparts.InterfaceEditPart;
+import org.eclipse.fordiac.ide.gef.policies.FeedbackConnectionEndpointEditPolicy;
 import org.eclipse.gef.ConnectionEditPart;
 import org.eclipse.gef.EditPart;
 
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/FBNElementSelectionPolicy.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/FBNElementSelectionPolicy.java
index 5093317..fdc0408 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/FBNElementSelectionPolicy.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/FBNElementSelectionPolicy.java
@@ -1,6 +1,6 @@
 /*******************************************************************************
  * Copyright (c) 2008, 2009, 2012, 2016 Profactor GmbH, TU Wien ACIN, fortiss GmbH
- * 
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -15,25 +15,25 @@
 
 import org.eclipse.fordiac.ide.application.editparts.AbstractFBNElementEditPart;
 import org.eclipse.fordiac.ide.gef.editparts.InterfaceEditPart;
+import org.eclipse.fordiac.ide.ui.preferences.ConnectionPreferenceValues;
 import org.eclipse.gef.Request;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editpolicies.SelectionEditPolicy;
 import org.eclipse.gef.requests.AlignmentRequest;
 
 /**
- * The Class FBSelectionPolicy.
- * Highlights the In/Outconnections of an FB. 
- * 
+ * The Class FBSelectionPolicy. Highlights the In/Outconnections of an FB.
+ *
  * Returns AlignmentCommand for alignment of FBs.
- * 
+ *
  */
 public class FBNElementSelectionPolicy extends SelectionEditPolicy {
 
 	@Override
 	protected void hideSelection() {
-		for (Object object : ((AbstractFBNElementEditPart)getHost()).getChildren()) {
+		for (Object object : ((AbstractFBNElementEditPart) getHost()).getChildren()) {
 			if (object instanceof InterfaceEditPart) {
-				((InterfaceEditPart) object).setInOutConnectionsWidth(0);
+				((InterfaceEditPart) object).setInOutConnectionsWidth(ConnectionPreferenceValues.NORMAL_LINE_WIDTH);
 
 			}
 		}
@@ -41,15 +41,15 @@
 
 	@Override
 	protected void showSelection() {
-		for (Object object : ((AbstractFBNElementEditPart)getHost()).getChildren()) {
+		for (Object object : ((AbstractFBNElementEditPart) getHost()).getChildren()) {
 			if (object instanceof InterfaceEditPart) {
-				((InterfaceEditPart) object).setInOutConnectionsWidth(2);
+				((InterfaceEditPart) object)
+						.setInOutConnectionsWidth(ConnectionPreferenceValues.HIGHLIGTHED_LINE_WIDTH);
 
 			}
 		}
 	}
 
-	
 	/**
 	 * @see org.eclipse.gef.EditPolicy#getCommand(org.eclipse.gef.Request)
 	 */
@@ -61,12 +61,11 @@
 		}
 		return null;
 	}
-	
+
 	/**
 	 * Returns the command contribution to an alignment request
-	 * 
-	 * @param request
-	 *            the alignment request
+	 *
+	 * @param request the alignment request
 	 * @return the contribution to the alignment
 	 */
 	protected Command getAlignCommand(AlignmentRequest request) {
@@ -76,5 +75,5 @@
 		req.setAlignmentRectangle(request.getAlignmentRectangle());
 		return getHost().getParent().getCommand(req);
 	}
-	
+
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/preferences/ConnectionConstraintsPrefernecePage.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/preferences/ConnectionConstraintsPrefernecePage.java
index 8e6ac9d..75341a1 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/preferences/ConnectionConstraintsPrefernecePage.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/preferences/ConnectionConstraintsPrefernecePage.java
@@ -14,6 +14,7 @@
 package org.eclipse.fordiac.ide.application.preferences;
 
 import org.eclipse.fordiac.ide.application.ApplicationPlugin;
+import org.eclipse.fordiac.ide.application.Messages;
 import org.eclipse.jface.preference.BooleanFieldEditor;
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.ui.IWorkbench;
@@ -22,27 +23,26 @@
 /**
  * The Class ConnectionConstraintsPrefernecePage.
  */
-public class ConnectionConstraintsPrefernecePage extends
-		FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+public class ConnectionConstraintsPrefernecePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
 
 	/**
-	 * Instantiates a new connection constraints prefernece page.
+	 * Instantiates a new connection constraints preference page.
 	 */
 	public ConnectionConstraintsPrefernecePage() {
 		super(GRID);
 		setPreferenceStore(ApplicationPlugin.getDefault().getPreferenceStore());
-		setDescription("Preferences for Connections!");
+		setDescription(Messages.ConnectionConstraintsPrefernecePage_Description);
 	}
 
 	/**
-	 * Creates the field editors. Field editors are abstractions of the common
-	 * GUI blocks needed to manipulate various types of preferences. Each field
-	 * editor knows how to save and restore itself.
+	 * Creates the field editors. Field editors are abstractions of the common GUI
+	 * blocks needed to manipulate various types of preferences. Each field editor
+	 * knows how to save and restore itself.
 	 */
 	@Override
 	public void createFieldEditors() {
 		addField(new BooleanFieldEditor(PreferenceConstants.P_BOOLEAN,
-				"Enable FORTE TypeCasts.", getFieldEditorParent()));
+				Messages.ConnectionConstraintsPrefernecePage_EnableFORTETypeCasts, getFieldEditorParent()));
 
 	}
 
@@ -53,7 +53,7 @@
 	 */
 	@Override
 	public void init(final IWorkbench workbench) {
-		//nothing todo here
+		// nothing todo here
 	}
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/InterfaceElementSection.java b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/InterfaceElementSection.java
index 6672950..5b280b7 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/InterfaceElementSection.java
+++ b/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/properties/InterfaceElementSection.java
@@ -17,6 +17,7 @@
 
 import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.fordiac.ide.application.Messages;
 import org.eclipse.fordiac.ide.application.commands.ChangeSubAppIETypeCommand;
 import org.eclipse.fordiac.ide.model.commands.change.ChangeTypeCommand;
 import org.eclipse.fordiac.ide.model.commands.delete.DeleteConnectionCommand;
@@ -53,7 +54,7 @@
 	}
 
 	private void createConnectionDisplaySection(Composite parent) {
-		group = getWidgetFactory().createGroup(parent, "Connections");
+		group = getWidgetFactory().createGroup(parent, Messages.InterfaceElementSection_ConnectionGroup);
 		group.setLayout(new GridLayout(2, false));
 		group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 		connectionsTree = new TreeViewer(group, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
@@ -69,7 +70,7 @@
 		Button delConnection = getWidgetFactory().createButton(group, "", SWT.PUSH); //$NON-NLS-1$
 		delConnection.setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM, false, true));
 		delConnection.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE));
-		delConnection.setToolTipText("delete Connection");
+		delConnection.setToolTipText(Messages.InterfaceElementSection_DeleteConnectionToolTip);
 		delConnection.addListener(SWT.Selection, event -> {
 			Object selection = ((TreeSelection) connectionsTree.getSelection()).getFirstElement();
 			if (selection instanceof Connection) {
@@ -86,9 +87,9 @@
 		commandStack = null;
 		if (null != type) {
 			if (getType().isIsInput()) {
-				group.setText("In-Connections");
+				group.setText(Messages.InterfaceElementSection_InConnections);
 			} else {
-				group.setText("Out-Connections");
+				group.setText(Messages.InterfaceElementSection_OutConnections);
 			}
 			connectionsTree.setInput(getType());
 		}
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java
index 6c8fb4b..9d5832f 100644
--- a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/CommFBGenerator.java
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.comgeneration.implementation;
 
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
@@ -20,6 +21,7 @@
 import org.eclipse.fordiac.ide.comgeneration.implementation.mediagenerators.MediaSpecificGenerator;
 import org.eclipse.fordiac.ide.comgeneration.implementation.mediagenerators.MediaSpecificGeneratorFactory;
 import org.eclipse.fordiac.ide.comgeneration.plugin.Activator;
+import org.eclipse.fordiac.ide.comgeneration.plugin.Messages;
 import org.eclipse.fordiac.ide.model.NameRepository;
 import org.eclipse.fordiac.ide.model.Palette.FBTypePaletteEntry;
 import org.eclipse.fordiac.ide.model.commands.create.DataConnectionCreateCommand;
@@ -49,11 +51,11 @@
 	private int generatedFBIndex;
 
 	public CommFBGenerator(MediaSpecificGeneratorFactory specificGeneratorFactory) {
-		super();	
+		super();
 		this.specificGeneratorFactory = specificGeneratorFactory;
 		transferedData = TransferedData.ALL;
 	}
-	
+
 	public TransferedData getTransferedData() {
 		return transferedData;
 	}
@@ -64,21 +66,21 @@
 
 	public void generate(CommunicationModel communicationModel) {
 		generatedFBs = new HashSet<GeneratedFBInfo>();
-		generatedFBIndex = 0;		
-		for (CommunicationChannel channel : communicationModel.getChannels().values()) {		
+		generatedFBIndex = 0;
+		for (CommunicationChannel channel : communicationModel.getChannels().values()) {
 			generate(channel);
 		}
 	}
-		
+
 	private void generate(CommunicationChannel channel) {
 		for (CommunicationChannelDestination destination : channel.getDestinations()) {
 			generateFBs(destination);
 		}
 	}
-		
+
 	private void generateFBs(CommunicationChannelDestination destination) {
 		if (destination.getSelectedMedia() == null || destination.getSelectedProtocolId() == null) {
-			Activator.getDefault().logError("No media or protocol selected for " + destination);
+			Activator.getDefault().logError(MessageFormat.format(Messages.CommFBGenerator_NoSelectionFor, destination));
 			return;
 		}
 		int numberDataPorts = 0;
@@ -101,45 +103,55 @@
 			withPorts = destination.getDestinationPorts().keySet();
 			break;
 		}
-		MediaSpecificGenerator specificGenerator = specificGeneratorFactory.getForProtocolId(destination.getSelectedProtocolId());
+		MediaSpecificGenerator specificGenerator = specificGeneratorFactory
+				.getForProtocolId(destination.getSelectedProtocolId());
 		if (specificGenerator == null) {
-			Activator.getDefault().logError("No generator for protocol " + destination.getSelectedProtocolId() + "!");
-		} else { 
-			GeneratedFBInfo sourceGeneratedFBInfo = generateFB(ChannelEnd.SOURCE, numberDataPorts, withPorts, destination, specificGenerator);
-			GeneratedFBInfo destinationGeneratedFBInfo = generateFB(ChannelEnd.DESTINATION, numberDataPorts, withPorts, destination, specificGenerator);
-			specificGenerator.configureFBs(sourceGeneratedFBInfo.getFb(), destinationGeneratedFBInfo.getFb(), destination.getSelectedMedia());
+			Activator.getDefault().logError(MessageFormat.format(Messages.CommFBGenerator_NoGeneratorForProtocol,
+					destination.getSelectedProtocolId()));
+		} else {
+			GeneratedFBInfo sourceGeneratedFBInfo = generateFB(ChannelEnd.SOURCE, numberDataPorts, withPorts,
+					destination, specificGenerator);
+			GeneratedFBInfo destinationGeneratedFBInfo = generateFB(ChannelEnd.DESTINATION, numberDataPorts, withPorts,
+					destination, specificGenerator);
+			specificGenerator.configureFBs(sourceGeneratedFBInfo.getFb(), destinationGeneratedFBInfo.getFb(),
+					destination.getSelectedMedia());
 		}
 	}
-	
-	private GeneratedFBInfo generateFB(ChannelEnd end, int numberOfDataPorts, Set<Integer> withPorts, CommunicationChannelDestination destination, MediaSpecificGenerator specificGenerator) {
+
+	private GeneratedFBInfo generateFB(ChannelEnd end, int numberOfDataPorts, Set<Integer> withPorts,
+			CommunicationChannelDestination destination, MediaSpecificGenerator specificGenerator) {
 		GeneratedFBInfo generatedFBInfo = null;
 		if (end == ChannelEnd.SOURCE && !destination.isSeparated() && !specificGenerator.isSeparatedSource()) {
-			generatedFBInfo = findExistingGeneratedFBInfo(end, destination.getCommunicationChannel(), withPorts, destination.getSelectedMedia().getSegment());
-		}		
+			generatedFBInfo = findExistingGeneratedFBInfo(end, destination.getCommunicationChannel(), withPorts,
+					destination.getSelectedMedia().getSegment());
+		}
 		if (generatedFBInfo != null) {
 			generatedFBInfo.getDestinations().add(destination);
 		} else {
-			FBTypePaletteEntry paletteEntry = specificGenerator.getPaletteType(end, numberOfDataPorts, destination.getCommunicationChannel().isLocal());	
-			Resource resource = (end == ChannelEnd.SOURCE) ? destination.getCommunicationChannel().getSourceResource() : destination.getDestinationResource();	
-			FBCreateCommand command = new FBCreateCommand(paletteEntry, resource.getFBNetwork() , 10, 10);
+			FBTypePaletteEntry paletteEntry = specificGenerator.getPaletteType(end, numberOfDataPorts,
+					destination.getCommunicationChannel().isLocal());
+			Resource resource = (end == ChannelEnd.SOURCE) ? destination.getCommunicationChannel().getSourceResource()
+					: destination.getDestinationResource();
+			FBCreateCommand command = new FBCreateCommand(paletteEntry, resource.getFBNetwork(), 10, 10);
 			command.execute();
 			FB generatedFB = command.getFB();
 			generatedFB.setName(NameRepository.createUniqueName(generatedFB, "GENERATED_" + generatedFBIndex)); //$NON-NLS-1$
 			generatedFBIndex++;
 			StringBuilder newFBComment = new StringBuilder();
 			newFBComment.append(GENERATED_ANNOTATION);
-			newFBComment.append("; ");
+			newFBComment.append("; "); //$NON-NLS-1$
 			for (Connection connection : destination.getConnection()) {
 				newFBComment.append(GENERATED_FOR_CONNECTION_ANNOTATION);
-				newFBComment.append("=");
-				newFBComment.append("; ");
+				newFBComment.append("="); //$NON-NLS-1$
+				newFBComment.append("; "); //$NON-NLS-1$
 				StringBuilder newConnectionComment = new StringBuilder();
 				if (connection.getComment() != null) {
 					newConnectionComment.append(connection.getComment());
 				}
-				newConnectionComment.append((end == ChannelEnd.SOURCE) ? GENERATED_SOURCE_FB_ANNOTATION : GENERATED_DESTINATION_FB_ANNOTATION);
-				newConnectionComment.append("=");
-				newConnectionComment.append("; ");
+				newConnectionComment.append((end == ChannelEnd.SOURCE) ? GENERATED_SOURCE_FB_ANNOTATION
+						: GENERATED_DESTINATION_FB_ANNOTATION);
+				newConnectionComment.append("="); //$NON-NLS-1$
+				newConnectionComment.append("; "); //$NON-NLS-1$
 				connection.setComment(newConnectionComment.toString());
 			}
 			generatedFB.setComment(newFBComment.toString());
@@ -158,11 +170,13 @@
 		}
 		return generatedFBInfo;
 	}
-	
-	private static void generateSourceConnections(GeneratedFBInfo generatedFBInfo, MediaSpecificGenerator specificGenerator) {
+
+	private static void generateSourceConnections(GeneratedFBInfo generatedFBInfo,
+			MediaSpecificGenerator specificGenerator) {
 		// get channel for any destination, they must all be same...
-		CommunicationChannel channel = generatedFBInfo.getDestinations().iterator().next().getCommunicationChannel();		
-		EventConnectionCreateCommand eventCreateCommand = new EventConnectionCreateCommand(generatedFBInfo.getResource().getFBNetwork());
+		CommunicationChannel channel = generatedFBInfo.getDestinations().iterator().next().getCommunicationChannel();
+		EventConnectionCreateCommand eventCreateCommand = new EventConnectionCreateCommand(
+				generatedFBInfo.getResource().getFBNetwork());
 		Event targetEvent = generatedFBInfo.getFb().getInterface().getEventInputs().get(1);
 		eventCreateCommand.setDestination(targetEvent);
 		eventCreateCommand.setSource(channel.getSourceEvent());
@@ -174,7 +188,8 @@
 				continue;
 			}
 			With with = channel.getSourceEvent().getWith().get(i);
-			DataConnectionCreateCommand dataCreateCommand = new DataConnectionCreateCommand(generatedFBInfo.getResource().getFBNetwork());
+			DataConnectionCreateCommand dataCreateCommand = new DataConnectionCreateCommand(
+					generatedFBInfo.getResource().getFBNetwork());
 			VarDeclaration targetData = specificGenerator.getTargetInputData(targetDataIndex, generatedFBInfo.getFb());
 			dataCreateCommand.setSource(with.getVariables());
 			dataCreateCommand.setDestination(targetData);
@@ -183,14 +198,16 @@
 			targetDataIndex++;
 		}
 	}
-	
-	private static void generateDestinationConnections(GeneratedFBInfo generatedFBInfo, MediaSpecificGenerator specificGenerator) {	
+
+	private static void generateDestinationConnections(GeneratedFBInfo generatedFBInfo,
+			MediaSpecificGenerator specificGenerator) {
 		// destinations must have only one fb generated for them...
 		CommunicationChannelDestination destination = generatedFBInfo.getDestinations().iterator().next();
 		for (Integer withIndex : destination.getDestinationPorts().keySet()) {
 			if (withIndex == -1) {
 				for (IInterfaceElement interfaceElement : destination.getDestinationPorts().get(withIndex)) {
-					EventConnectionCreateCommand eventCreateCommand = new EventConnectionCreateCommand(generatedFBInfo.getResource().getFBNetwork());
+					EventConnectionCreateCommand eventCreateCommand = new EventConnectionCreateCommand(
+							generatedFBInfo.getResource().getFBNetwork());
 					eventCreateCommand.setDestination(interfaceElement);
 					Event sourceEvent = generatedFBInfo.getFb().getInterface().getEventOutputs().get(1);
 					eventCreateCommand.setSource(sourceEvent);
@@ -198,7 +215,8 @@
 					// TODO annotation
 				}
 			} else if (withIndex >= 0) {
-				// calculated the index of port on the generated FB adding 1 for each with port used for generation which has smaller index than current with port
+				// calculated the index of port on the generated FB adding 1 for each with port
+				// used for generation which has smaller index than current with port
 				int generatedPortIndex = 0;
 				for (Integer generatedWithPort : generatedFBInfo.getWithPorts()) {
 					if (generatedWithPort >= 0 && generatedWithPort < withIndex) {
@@ -206,9 +224,11 @@
 					}
 				}
 				for (IInterfaceElement interfaceElement : destination.getDestinationPorts().get(withIndex)) {
-					DataConnectionCreateCommand dataCreateCommand = new DataConnectionCreateCommand(generatedFBInfo.getResource().getFBNetwork());
+					DataConnectionCreateCommand dataCreateCommand = new DataConnectionCreateCommand(
+							generatedFBInfo.getResource().getFBNetwork());
 					dataCreateCommand.setDestination(interfaceElement);
-					VarDeclaration targetData = specificGenerator.getTargetOutputData(generatedPortIndex, generatedFBInfo.getFb());
+					VarDeclaration targetData = specificGenerator.getTargetOutputData(generatedPortIndex,
+							generatedFBInfo.getFb());
 					dataCreateCommand.setSource(targetData);
 					dataCreateCommand.execute();
 					// TODO annotation
@@ -216,7 +236,7 @@
 			}
 		}
 	}
-	
+
 	private void generateInitConnection(GeneratedFBInfo generatedFBInfo) {
 		ArrayList<Event> sourceEvents = new ArrayList<Event>();
 		Resource resource = generatedFBInfo.getResource();
@@ -228,9 +248,10 @@
 			}
 		}
 		if (sourceEvents.size() == 0) {
-			FB startFB = resource.getFBNetwork().getFBNamed("START");
+			FB startFB = resource.getFBNetwork().getFBNamed("START"); //$NON-NLS-1$
 			if (startFB == null) {
-				Activator.getDefault().logError("No start FB in resource " + resource.getName() + "!");
+				Activator.getDefault().logError(
+						MessageFormat.format(Messages.CommFBGenerator_NoStartFBInResource, resource.getName()));
 				return;
 			}
 			sourceEvents.add(startFB.getInterface().getEventOutputs().get(0));
@@ -244,85 +265,97 @@
 			// TODO annotation
 		}
 	}
-		
-	private GeneratedFBInfo findExistingGeneratedFBInfo(ChannelEnd end, CommunicationChannel channel, Set<Integer> withPorts, Segment segment) {
+
+	private GeneratedFBInfo findExistingGeneratedFBInfo(ChannelEnd end, CommunicationChannel channel,
+			Set<Integer> withPorts, Segment segment) {
 		for (GeneratedFBInfo generatedFBInfo : generatedFBs) {
-			if ((generatedFBInfo.getEnd() == end) && (generatedFBInfo.getChannel().equals(channel)) && 
-					((generatedFBInfo.getWithPorts() == null && withPorts == null) || generatedFBInfo.getWithPorts().equals(withPorts)) &&
-					(generatedFBInfo.getSegment().equals(segment))) {
-				return generatedFBInfo;					
+			if ((generatedFBInfo.getEnd() == end) && (generatedFBInfo.getChannel().equals(channel))
+					&& ((generatedFBInfo.getWithPorts() == null && withPorts == null)
+							|| generatedFBInfo.getWithPorts().equals(withPorts))
+					&& (generatedFBInfo.getSegment().equals(segment))) {
+				return generatedFBInfo;
 			}
 		}
 		return null;
 	}
-	
+
 	public static enum TransferedData {
-		ALL,
-		EXACT
+		ALL, EXACT
 	}
-	
+
 	private static class GeneratedFBInfo {
 		private FB fb;
 		private Set<CommunicationChannelDestination> destinations;
 		private Set<Integer> withPorts;
 		private Segment segment;
 		private ChannelEnd end;
-		
+
 		public GeneratedFBInfo(ChannelEnd end, Segment segment) {
 			super();
 			this.end = end;
 			destinations = new HashSet<CommunicationChannelDestination>();
 			this.segment = segment;
 		}
+
 		public FB getFb() {
 			return fb;
 		}
+
 		public void setFb(FB fb) {
 			this.fb = fb;
 		}
+
 		public Set<Integer> getWithPorts() {
 			return withPorts;
 		}
+
 		public void setWithPorts(Set<Integer> withPorts) {
 			this.withPorts = withPorts;
 		}
+
 		public Set<CommunicationChannelDestination> getDestinations() {
 			return destinations;
 		}
+
 		public ChannelEnd getEnd() {
 			return end;
 		}
+
 		public void setEnd(ChannelEnd end) {
 			this.end = end;
 		}
+
 		public Segment getSegment() {
 			return segment;
 		}
+
 		public void setSegment(Segment segment) {
 			this.segment = segment;
 		}
+
 		public Resource getResource() {
-			return (end == ChannelEnd.SOURCE) ? 
-					destinations.iterator().next().getCommunicationChannel().getSourceResource() 
+			return (end == ChannelEnd.SOURCE)
+					? destinations.iterator().next().getCommunicationChannel().getSourceResource()
 					: destinations.iterator().next().getDestinationResource();
-		}	
+		}
+
 		public CommunicationChannel getChannel() {
 			return destinations.iterator().next().getCommunicationChannel();
 		}
 	}
-	
+
 	public void removeGeneratedElements(Application application) {
 		HashSet<FBNetwork> usedResources = new HashSet<FBNetwork>();
 		for (FBNetworkElement fb : application.getFBNetwork().getNetworkElements()) {
 			if (fb.getResource() != null) {
 				usedResources.add(fb.getResource().getFBNetwork());
 			}
-		}	
+		}
 		for (FBNetwork resourceFBNetwork : usedResources) {
 			removeGeneratedElements(resourceFBNetwork);
 		}
 	}
-	
+
 	public void removeGeneratedElements(FBNetwork network) {
 		HashSet<FBNetworkElement> fbsToRemove = new HashSet<FBNetworkElement>();
 		for (FBNetworkElement fb : network.getNetworkElements()) {
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/ProtocolSelector.java b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/ProtocolSelector.java
index c6416a0..9ed5188 100644
--- a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/ProtocolSelector.java
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/ProtocolSelector.java
@@ -21,21 +21,21 @@
 import org.eclipse.fordiac.ide.comgeneration.implementation.mediagenerators.CanPubSubGenerator;
 import org.eclipse.fordiac.ide.comgeneration.implementation.mediagenerators.EthernetPubSubGenerator;
 import org.eclipse.fordiac.ide.comgeneration.plugin.Activator;
+import org.eclipse.fordiac.ide.comgeneration.plugin.Messages;
 import org.eclipse.fordiac.ide.model.libraryElement.Segment;
 
 public final class ProtocolSelector {
-	
+
 	public static void doAutomatedProtocolSelection(CommunicationModel model) {
 		for (CommunicationChannel channel : model.getChannels().values()) {
 			List<Segment> commonSegments = new ArrayList<>();
 			Iterator<CommunicationChannelDestination> destinationIterator = channel.getDestinations().iterator();
-			
+
 			CommunicationChannelDestination destination = destinationIterator.next();
 			for (CommunicationMediaInfo mediaInfo : destination.getAvailableMedia()) {
 				commonSegments.add(mediaInfo.getSegment());
 			}
-			
-			
+
 			while (destinationIterator.hasNext()) {
 				destination = destinationIterator.next();
 				Iterator<Segment> segmentIterator = commonSegments.iterator();
@@ -52,19 +52,19 @@
 					}
 				}
 			}
-			
+
 			Segment selectedCommonSegment = null;
 			if (!commonSegments.isEmpty()) {
 				sortSegments(commonSegments);
 				selectedCommonSegment = commonSegments.get(0);
 			}
-			
+
 			destinationIterator = channel.getDestinations().iterator();
 			while (destinationIterator.hasNext()) {
 				destination = destinationIterator.next();
-				
+
 				Segment selectedSegment = selectedCommonSegment;
-				
+
 				if (selectedSegment == null) {
 					ArrayList<Segment> availableSegments = new ArrayList<Segment>();
 					for (CommunicationMediaInfo mediaInfo : destination.getAvailableMedia()) {
@@ -75,7 +75,7 @@
 						selectedSegment = availableSegments.get(0);
 					}
 				}
-				
+
 				if (selectedSegment != null) {
 					for (CommunicationMediaInfo mediaInfo : destination.getAvailableMedia()) {
 						if (mediaInfo.getSegment() == selectedSegment) {
@@ -85,13 +85,13 @@
 						}
 					}
 				} else {
-					Activator.getDefault().logError("No connection available for ");
+					Activator.getDefault().logError(Messages.ProtocolSelector_NoConnectionAvailable);
 				}
-				
+
 			}
 		}
 	}
-	
+
 	private static String getProtocolIdForMetiaType(Segment segment) {
 		if (segment.getType().getName().equalsIgnoreCase("Ethernet")) { //$NON-NLS-1$
 			return EthernetPubSubGenerator.PROTOCOL_ID;
@@ -100,31 +100,30 @@
 		}
 		return null;
 	}
-	
-	
+
 	private static void sortSegments(List<Segment> segmentList) {
 		Collections.sort(segmentList, (Segment o1, Segment o2) -> {
-				String name1 = o1.getType().getName();
-				String name2 = o2.getType().getName();
-				
-				if (name1.equalsIgnoreCase("Can")) { //$NON-NLS-1$
-					if (name2.equalsIgnoreCase("Can")) { //$NON-NLS-1$
-						return 0;
-					} 
-					return -1;
-				} else if (name1.equalsIgnoreCase("Ethernet")) { //$NON-NLS-1$
-					if (name2.equalsIgnoreCase("Can")) { //$NON-NLS-1$
-						return 1;
-					} else if (name2.equalsIgnoreCase("Ethernet")) { //$NON-NLS-1$
-						return 0;
-					} 
-					return -1;
+			String name1 = o1.getType().getName();
+			String name2 = o2.getType().getName();
+
+			if (name1.equalsIgnoreCase("Can")) { //$NON-NLS-1$
+				if (name2.equalsIgnoreCase("Can")) { //$NON-NLS-1$
+					return 0;
 				}
-				return 0;
-			});
+				return -1;
+			} else if (name1.equalsIgnoreCase("Ethernet")) { //$NON-NLS-1$
+				if (name2.equalsIgnoreCase("Can")) { //$NON-NLS-1$
+					return 1;
+				} else if (name2.equalsIgnoreCase("Ethernet")) { //$NON-NLS-1$
+					return 0;
+				}
+				return -1;
+			}
+			return 0;
+		});
 	}
-	
+
 	private ProtocolSelector() {
-		throw new UnsupportedOperationException("ProtocolSelector utility class should not be instantiated!");
+		throw new UnsupportedOperationException("ProtocolSelector utility class should not be instantiated!"); //$NON-NLS-1$
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/CanPubSubGenerator.java b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/CanPubSubGenerator.java
index 81ad845..1fc1ab6 100644
--- a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/CanPubSubGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/CanPubSubGenerator.java
@@ -13,9 +13,12 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.comgeneration.implementation.mediagenerators;
 
+import java.text.MessageFormat;
+
 import org.eclipse.fordiac.ide.comgeneration.implementation.ChannelEnd;
 import org.eclipse.fordiac.ide.comgeneration.implementation.CommunicationMediaInfo;
 import org.eclipse.fordiac.ide.comgeneration.plugin.Activator;
+import org.eclipse.fordiac.ide.comgeneration.plugin.Messages;
 import org.eclipse.fordiac.ide.model.Palette.FBTypePaletteEntry;
 import org.eclipse.fordiac.ide.model.Palette.Palette;
 import org.eclipse.fordiac.ide.model.Palette.PaletteEntry;
@@ -24,19 +27,22 @@
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 
 public class CanPubSubGenerator extends AbstractMediaSpecificGenerator {
-	private static final String[] PALETTE_ENTRY_SOURCE_LOCAL = {"net/PUBL_0", "net/PUBL_1", "net/PUBL_2", "net/PUBL_3", "net/PUBL_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	private static final String[] PALETTE_ENTRY_DESTINATION_LOCAL = {"net/SUBL_0", "net/SUBL_1", "net/SUBL_2", "net/SUBL_3", "net/SUBL_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	private static final String[] PALETTE_ENTRY_SOURCE = {"net/PUBLISH_0", "net/PUBLISH_1", "net/PUBLISH_2", "net/PUBLISH_3", "net/PUBLISH_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	private static final String[] PALETTE_ENTRY_DESTINATION = {"net/SUBSCRIBE_0", "net/SUBSCRIBE_1", "net/SUBSCRIBE_2", "net/SUBSCRIBE_3", "net/SUBSCRIBE_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+	private static final String[] PALETTE_ENTRY_SOURCE_LOCAL = { "net/PUBL_0", "net/PUBL_1", "net/PUBL_2", "net/PUBL_3", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+			"net/PUBL_4" }; //$NON-NLS-1$
+	private static final String[] PALETTE_ENTRY_DESTINATION_LOCAL = { "net/SUBL_0", "net/SUBL_1", "net/SUBL_2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			"net/SUBL_3", "net/SUBL_4" }; //$NON-NLS-1$ //$NON-NLS-2$
+	private static final String[] PALETTE_ENTRY_SOURCE = { "net/PUBLISH_0", "net/PUBLISH_1", "net/PUBLISH_2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			"net/PUBLISH_3", "net/PUBLISH_4" }; //$NON-NLS-1$ //$NON-NLS-2$
+	private static final String[] PALETTE_ENTRY_DESTINATION = { "net/SUBSCRIBE_0", "net/SUBSCRIBE_1", "net/SUBSCRIBE_2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			"net/SUBSCRIBE_3", "net/SUBSCRIBE_4" }; //$NON-NLS-1$ //$NON-NLS-2$
 
 	public static final String PROTOCOL_ID = "CanPubSub"; //$NON-NLS-1$
-	
+
 	private static final int DEFAULT_START_MESSAGE_ID = 500;
-	
-	
-	private int startMessageId; 
+
+	private int startMessageId;
 	private int currentMessageId;
-	
+
 	public CanPubSubGenerator(Palette palette) {
 		super(palette);
 		startMessageId = DEFAULT_START_MESSAGE_ID;
@@ -52,21 +58,21 @@
 	public String getProtocolId() {
 		return PROTOCOL_ID;
 	}
-	
+
 	@Override
 	public FBTypePaletteEntry getPaletteType(ChannelEnd end, int numDataPorts, boolean local) {
 		String[] palletEntries;
-		
+
 		if (local) {
 			palletEntries = (end == ChannelEnd.SOURCE) ? PALETTE_ENTRY_SOURCE_LOCAL : PALETTE_ENTRY_DESTINATION_LOCAL;
 		} else {
 			palletEntries = (end == ChannelEnd.SOURCE) ? PALETTE_ENTRY_SOURCE : PALETTE_ENTRY_DESTINATION;
 		}
-		
+
 		String[] paletteEntryPath = palletEntries[numDataPorts].split("/"); //$NON-NLS-1$
-		
+
 		PaletteGroup group = getPalette().getRootGroup();
-		
+
 		for (int i = 0; i < paletteEntryPath.length; i++) {
 			String currentPath = paletteEntryPath[i];
 			if (i == paletteEntryPath.length - 1) {
@@ -78,9 +84,10 @@
 						}
 					}
 				}
-				
-				Activator.getDefault().logError("FB type palette entry '" + currentPath + "' not found!"); 
-				
+
+				Activator.getDefault().logError(
+						MessageFormat.format(Messages.CommGenerator_FBTypePaletteEntryNotFound, currentPath));
+
 			} else {
 				boolean foundSubGroup = false;
 				for (PaletteGroup subGroup : group.getSubGroups()) {
@@ -91,17 +98,16 @@
 					}
 				}
 				if (!foundSubGroup) {
-					Activator.getDefault().logError("No subgroup '" + currentPath + "'!"); 
+					Activator.getDefault()
+							.logError(MessageFormat.format(Messages.CommGenerator_NoSubgroup, currentPath));
 					return null;
-				} 
+				}
 			}
-			
+
 		}
-		
+
 		return null;
 	}
-	
-	
 
 	@Override
 	public void configureFBs(FB sourceFB, FB destinationFB, CommunicationMediaInfo mediaInfo) {
@@ -109,7 +115,7 @@
 		VarDeclaration sourceId;
 		VarDeclaration destinationQI;
 		VarDeclaration destinationId;
-		
+
 		if (mediaInfo.getSourceLink().getDevice().equals(mediaInfo.getDestinationLink().getDevice())) {
 			sourceQI = null;
 			sourceId = sourceFB.getInterface().getInputVars().get(0);
@@ -121,8 +127,8 @@
 			destinationQI = destinationFB.getInterface().getInputVars().get(0);
 			destinationId = destinationFB.getInterface().getInputVars().get(1);
 		}
-		
-		String sourceValue = sourceId.getValue().getValue(); 
+
+		String sourceValue = sourceId.getValue().getValue();
 		if (sourceValue == null) {
 			StringBuilder sb = new StringBuilder();
 			sb.append("CAN:"); //$NON-NLS-1$
@@ -136,13 +142,13 @@
 				sourceQI.getValue().setValue("1"); //$NON-NLS-1$
 			}
 		}
-		
+
 		destinationId.getValue().setValue(sourceValue);
 		if (destinationQI != null) {
 			destinationQI.getValue().setValue("1"); //$NON-NLS-1$
 		}
 	}
-	
+
 	@Override
 	public VarDeclaration getTargetInputData(int index, FB fb) {
 		String dataName = "SD_" + (index + 1); //$NON-NLS-1$
@@ -169,7 +175,7 @@
 	public void reset() {
 		currentMessageId = startMessageId;
 	}
-	
+
 	public void reset(int startMessageId) {
 		this.startMessageId = startMessageId;
 		reset();
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/EthernetPubSubGenerator.java b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/EthernetPubSubGenerator.java
index 7b96534..dc1e84a 100644
--- a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/EthernetPubSubGenerator.java
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/implementation/mediagenerators/EthernetPubSubGenerator.java
@@ -13,9 +13,12 @@
  *******************************************************************************/
 package org.eclipse.fordiac.ide.comgeneration.implementation.mediagenerators;
 
+import java.text.MessageFormat;
+
 import org.eclipse.fordiac.ide.comgeneration.implementation.ChannelEnd;
 import org.eclipse.fordiac.ide.comgeneration.implementation.CommunicationMediaInfo;
 import org.eclipse.fordiac.ide.comgeneration.plugin.Activator;
+import org.eclipse.fordiac.ide.comgeneration.plugin.Messages;
 import org.eclipse.fordiac.ide.model.Palette.FBTypePaletteEntry;
 import org.eclipse.fordiac.ide.model.Palette.Palette;
 import org.eclipse.fordiac.ide.model.Palette.PaletteEntry;
@@ -24,21 +27,24 @@
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
 
 public class EthernetPubSubGenerator extends AbstractMediaSpecificGenerator {
-	private static final String[] PALETTE_ENTRY_SOURCE_LOCAL = {"net/PUBL_0", "net/PUBL_1", "net/PUBL_2", "net/PUBL_3", "net/PUBL_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	private static final String[] PALETTE_ENTRY_DESTINATION_LOCAL = {"net/SUBL_0", "net/SUBL_1", "net/SUBL_2", "net/SUBL_3", "net/SUBL_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	private static final String[] PALETTE_ENTRY_SOURCE = {"net/PUBLISH_0", "net/PUBLISH_1", "net/PUBLISH_2", "net/PUBLISH_3", "net/PUBLISH_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	private static final String[] PALETTE_ENTRY_DESTINATION = {"net/SUBSCRIBE_0", "net/SUBSCRIBE_1", "net/SUBSCRIBE_2", "net/SUBSCRIBE_3", "net/SUBSCRIBE_4"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+	private static final String[] PALETTE_ENTRY_SOURCE_LOCAL = { "net/PUBL_0", "net/PUBL_1", "net/PUBL_2", "net/PUBL_3", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+			"net/PUBL_4" }; //$NON-NLS-1$
+	private static final String[] PALETTE_ENTRY_DESTINATION_LOCAL = { "net/SUBL_0", "net/SUBL_1", "net/SUBL_2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			"net/SUBL_3", "net/SUBL_4" }; //$NON-NLS-1$ //$NON-NLS-2$
+	private static final String[] PALETTE_ENTRY_SOURCE = { "net/PUBLISH_0", "net/PUBLISH_1", "net/PUBLISH_2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			"net/PUBLISH_3", "net/PUBLISH_4" }; //$NON-NLS-1$ //$NON-NLS-2$
+	private static final String[] PALETTE_ENTRY_DESTINATION = { "net/SUBSCRIBE_0", "net/SUBSCRIBE_1", "net/SUBSCRIBE_2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			"net/SUBSCRIBE_3", "net/SUBSCRIBE_4" }; //$NON-NLS-1$ //$NON-NLS-2$
 
 	public static final String PROTOCOL_ID = "EthernetPubSub"; //$NON-NLS-1$
-	
+
 	private static final String DEFAULT_HOST = "225.0.0.1"; //$NON-NLS-1$
 	private static final int DEFAULT_START_PORT = 61550;
-	
-	
+
 	private String host;
-	private int startPort; 
+	private int startPort;
 	private int currentPort;
-	
+
 	public EthernetPubSubGenerator(Palette palette) {
 		super(palette);
 		startPort = DEFAULT_START_PORT;
@@ -55,21 +61,21 @@
 	public String getProtocolId() {
 		return PROTOCOL_ID;
 	}
-	
+
 	@Override
 	public FBTypePaletteEntry getPaletteType(ChannelEnd end, int numDataPorts, boolean local) {
 		String[] palletEntries;
-		
+
 		if (local) {
 			palletEntries = (end == ChannelEnd.SOURCE) ? PALETTE_ENTRY_SOURCE_LOCAL : PALETTE_ENTRY_DESTINATION_LOCAL;
 		} else {
 			palletEntries = (end == ChannelEnd.SOURCE) ? PALETTE_ENTRY_SOURCE : PALETTE_ENTRY_DESTINATION;
 		}
-		
+
 		String[] paletteEntryPath = palletEntries[numDataPorts].split("/"); //$NON-NLS-1$
-		
+
 		PaletteGroup group = getPalette().getRootGroup();
-		
+
 		for (int i = 0; i < paletteEntryPath.length; i++) {
 			String currentPath = paletteEntryPath[i];
 			if (i == paletteEntryPath.length - 1) {
@@ -81,8 +87,9 @@
 						}
 					}
 				}
-				Activator.getDefault().logError("FB type palette entry '" + currentPath + "' not found!");
-				
+				Activator.getDefault()
+						.logError(MessageFormat.format(Messages.CommGenerator_FBTypePaletteEntryNotFound, currentPath));
+
 			} else {
 				boolean foundSubGroup = false;
 				for (PaletteGroup subGroup : group.getSubGroups()) {
@@ -93,28 +100,25 @@
 					}
 				}
 				if (!foundSubGroup) {
-					Activator.getDefault().logError("No subgroup '" + currentPath + "'!");
+					Activator.getDefault()
+							.logError(MessageFormat.format(Messages.CommGenerator_NoSubgroup, currentPath));
 					return null;
-				} 
+				}
 			}
-			
+
 		}
-		
+
 		return null;
 	}
-	
-
-	
-	
 
 	@Override
 	public void configureFBs(FB sourceFB, FB destinationFB, CommunicationMediaInfo mediaInfo) {
-		
+
 		VarDeclaration sourceQI;
 		VarDeclaration sourceId;
 		VarDeclaration destinationQI;
 		VarDeclaration destinationId;
-		
+
 		if (mediaInfo.getSourceLink().getDevice().equals(mediaInfo.getDestinationLink().getDevice())) {
 			sourceQI = null;
 			sourceId = sourceFB.getInterface().getInputVars().get(0);
@@ -126,8 +130,8 @@
 			destinationQI = destinationFB.getInterface().getInputVars().get(0);
 			destinationId = destinationFB.getInterface().getInputVars().get(1);
 		}
-		
-		String sourceValue = sourceId.getValue().getValue(); 
+
+		String sourceValue = sourceId.getValue().getValue();
 		if (sourceValue == null) {
 			StringBuilder sb = new StringBuilder();
 			sb.append(host);
@@ -140,15 +144,12 @@
 				sourceQI.getValue().setValue("1"); //$NON-NLS-1$
 			}
 		}
-		
+
 		destinationId.getValue().setValue(sourceValue);
 		if (destinationQI != null) {
 			destinationQI.getValue().setValue("1"); //$NON-NLS-1$
 		}
 	}
-	
-	
-	
 
 	@Override
 	public VarDeclaration getTargetInputData(int index, FB fb) {
@@ -176,7 +177,7 @@
 	public void reset() {
 		currentPort = startPort;
 	}
-	
+
 	public void reset(int startPort) {
 		this.startPort = startPort;
 		reset();
@@ -186,9 +187,5 @@
 	public boolean isSeparatedSource() {
 		return false;
 	}
-	
-	
-	
-	
-	
+
 }
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/plugin/Messages.java b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/plugin/Messages.java
new file mode 100644
index 0000000..fdae7a1
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/plugin/Messages.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Andrea Zoitl
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Andrea Zoitl
+ *     - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.comgeneration.plugin;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * The Class Messages.
+ */
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.fordiac.ide.comgeneration.plugin.messages"; //$NON-NLS-1$
+
+	public static String CommFBGenerator_NoSelectionFor;
+
+	public static String CommFBGenerator_NoGeneratorForProtocol;
+
+	public static String CommFBGenerator_NoStartFBInResource;
+
+	public static String ProtocolSelector_NoConnectionAvailable;
+
+	public static String CommGenerator_FBTypePaletteEntryNotFound;
+
+	public static String CommGenerator_NoSubgroup;
+
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+		// empty private constructor
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/plugin/messages.properties b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/plugin/messages.properties
new file mode 100644
index 0000000..c14b25f
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.comgeneration/src/org/eclipse/fordiac/ide/comgeneration/plugin/messages.properties
@@ -0,0 +1,26 @@
+ ###############################################################################
+ # Copyright (c) 2019 Andrea Zoitl
+ # 
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # http://www.eclipse.org/legal/epl-2.0.
+ #
+ # SPDX-License-Identifier: EPL-2.0
+ #
+ # Contributors:
+ #   Andrea Zoitl
+ #     - initial API and implementation and/or initial documentation
+ ###############################################################################
+
+CommFBGenerator_NoSelectionFor=No media or protocol selected for {0}
+
+CommFBGenerator_NoGeneratorForProtocol=No generator for protocol {0}!
+
+CommFBGenerator_NoStartFBInResource= No start FB in resource {0}!
+
+ProtocolSelector_NoConnectionAvailableFor= No connection available
+
+CommGenerator_FBTypePaletteEntryNotFound=FB type palette entry '{0}' not found!
+
+CommGenerator_NoSubgroup=No subgroup '{0}'!
+
diff --git a/plugins/org.eclipse.fordiac.ide.export.forte_1.0.x/src/org/eclipse/fordiac/ide/export/forte1_0_x/ForteExportFilter1_0_x.java b/plugins/org.eclipse.fordiac.ide.export.forte_1.0.x/src/org/eclipse/fordiac/ide/export/forte1_0_x/ForteExportFilter1_0_x.java
index b1f5c93..e5cbbd7 100644
--- a/plugins/org.eclipse.fordiac.ide.export.forte_1.0.x/src/org/eclipse/fordiac/ide/export/forte1_0_x/ForteExportFilter1_0_x.java
+++ b/plugins/org.eclipse.fordiac.ide.export.forte_1.0.x/src/org/eclipse/fordiac/ide/export/forte1_0_x/ForteExportFilter1_0_x.java
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Copyright (c) 2009, - 2017 Profactor GmbH, TU Wien ACIN, fortiss GmbH.
  * 			2018, TU Wie/ACIN
- * 
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -9,7 +9,7 @@
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
- *   Gerhard Ebenhofer, Alois Zoitl, Martin Melik Merkumians, Monika Wenger, 
+ *   Gerhard Ebenhofer, Alois Zoitl, Martin Melik Merkumians, Monika Wenger,
  *   Ingo Hegny, Matthias Plasch, Jose Cabral, Martin Jobst
  *     - initial API and implementation and/or initial documentation
  *   Martin Melik Merkumians - adds export for SimpleFB
@@ -59,7 +59,7 @@
 
 /**
  * export functionality to create *.cpp and *.h files in the FORTE V1.0.x format
- * 
+ *
  */
 public class ForteExportFilter1_0_x extends CPPExportFilter implements IExportFilter {
 
@@ -210,7 +210,7 @@
 		if (libraryType instanceof CompilableType) {
 			CompilableType type = (CompilableType) libraryType;
 			if (null != type.getCompilerInfo() && null != type.getCompilerInfo().getHeader()) {
-				pwCPP.println(type.getCompilerInfo().getHeader());
+				pwH.println(type.getCompilerInfo().getHeader());
 			}
 		}
 	}
@@ -225,44 +225,9 @@
 
 	@Override
 	protected void exportFBStarter() {
-		InterfaceList interfaceList = null;
+		setBaseClass();
 
-		if (libraryType instanceof BasicFBType) {
-			baseClass = C_BASIC_FB; // $NON-NLS-1$
-			pwH.println("\n#include <basicfb.h>"); //$NON-NLS-1$
-			forteEmitterInfos
-					.add("  - Creating header and source files for Basic Function Block " + libraryType.getName());
-			interfaceList = ((FBType) libraryType).getInterfaceList();
-		} else if (libraryType instanceof SimpleFBType) {
-			baseClass = "CSimpleFB"; // $NON-NLS-1$
-			pwH.println("\n#include <simplefb.h>"); //$NON-NLS-1$
-			forteEmitterInfos
-					.add("  - Creating header and source files for Simple Function Block " + libraryType.getName());
-			interfaceList = ((FBType) libraryType).getInterfaceList();
-		} else if (libraryType instanceof CompositeFBType) {
-			pwH.println("\n#include <cfb.h>"); //$NON-NLS-1$
-			pwH.println("#include <typelib.h>"); //$NON-NLS-1$
-			baseClass = "CCompositeFB"; //$NON-NLS-1$
-			forteEmitterInfos
-					.add("  - Creating header and source files for Composite Function Block " + libraryType.getName());
-			interfaceList = ((FBType) libraryType).getInterfaceList();
-
-		} else if (libraryType instanceof ServiceInterfaceFBType) {
-			pwH.println("\n#include <funcbloc.h>"); //$NON-NLS-1$
-			baseClass = "CFunctionBlock"; //$NON-NLS-1$
-			forteEmitterInfos.add("  - Creating header and source files for Service Interface Function Block " + name);
-			interfaceList = ((FBType) libraryType).getInterfaceList();
-		} else if (libraryType instanceof AdapterType) {
-			pwH.println("\n#include <adapter.h>"); //$NON-NLS-1$
-			pwH.println("#include <typelib.h>"); //$NON-NLS-1$
-			baseClass = "CAdapter"; //$NON-NLS-1$
-			forteEmitterInfos
-					.add("  - Creating header and source files for Adapter Function Block " + libraryType.getName());
-			interfaceList = ((AdapterType) libraryType).getInterfaceList();
-		} else {
-			forteEmitterErrors.add(
-					"  - FB is not of supported class {Basic Function Block, Composite Function Block, Service Interface Function Block}");
-		}
+		InterfaceList interfaceList = getInterfaceList();
 
 		if (interfaceList != null) {
 			Set<String> datatypeNames = new HashSet<>();
@@ -319,6 +284,57 @@
 
 	}
 
+	private void setBaseClass() {
+		if (libraryType instanceof BasicFBType) {
+			baseClass = C_BASIC_FB; // $NON-NLS-1$
+			pwH.println("\n#include <basicfb.h>"); //$NON-NLS-1$
+			forteEmitterInfos
+					.add("  - Creating header and source files for Basic Function Block " + libraryType.getName());
+		} else if (libraryType instanceof SimpleFBType) {
+			baseClass = "CSimpleFB"; // $NON-NLS-1$
+			pwH.println("\n#include <simplefb.h>"); //$NON-NLS-1$
+			forteEmitterInfos
+					.add("  - Creating header and source files for Simple Function Block " + libraryType.getName());
+		} else if (libraryType instanceof CompositeFBType) {
+			pwH.println("\n#include <cfb.h>"); //$NON-NLS-1$
+			pwH.println("#include <typelib.h>"); //$NON-NLS-1$
+			baseClass = "CCompositeFB"; //$NON-NLS-1$
+			forteEmitterInfos
+					.add("  - Creating header and source files for Composite Function Block " + libraryType.getName());
+		} else if (libraryType instanceof ServiceInterfaceFBType) {
+			pwH.println("\n#include <funcbloc.h>"); //$NON-NLS-1$
+			baseClass = "CFunctionBlock"; //$NON-NLS-1$
+			forteEmitterInfos.add("  - Creating header and source files for Service Interface Function Block " + name);
+		} else if (libraryType instanceof AdapterType) {
+			pwH.println("\n#include <adapter.h>"); //$NON-NLS-1$
+			pwH.println("#include <typelib.h>"); //$NON-NLS-1$
+			baseClass = "CAdapter"; //$NON-NLS-1$
+			forteEmitterInfos
+					.add("  - Creating header and source files for Adapter Function Block " + libraryType.getName());
+		} else {
+			forteEmitterErrors.add(
+					"  - FB is not of supported class {Basic, Simple, Composite, or Service Interface Function Block}");
+		}
+
+		if (libraryType instanceof CompilableType) {
+			CompilableType type = (CompilableType) libraryType;
+			if (null != type.getCompilerInfo() && null != type.getCompilerInfo().getClassdef()
+					&& !"".equals(type.getCompilerInfo().getClassdef())) { //$NON-NLS-1$
+				baseClass = type.getCompilerInfo().getClassdef();
+			}
+		}
+	}
+
+	private InterfaceList getInterfaceList() {
+		InterfaceList interfaceList = null;
+		if (libraryType instanceof FBType) {
+			interfaceList = ((FBType) libraryType).getInterfaceList();
+		} else if (libraryType instanceof AdapterType) {
+			interfaceList = ((AdapterType) libraryType).getInterfaceList();
+		}
+		return interfaceList;
+	}
+
 	private static void extractAdapterTypeNames(EList<AdapterDeclaration> adapters, Set<String> dataTypeNames) {
 		if (!adapters.isEmpty()) {
 			for (int i = 0; i < adapters.size(); i++) {
@@ -372,7 +388,7 @@
 	protected void exportFBConstructor() {
 		pwH.println("\npublic:"); //$NON-NLS-1$
 
-		if (baseClass.equals(C_BASIC_FB) || baseClass.equals("CSimpleFB")) { // $NON-NLS-1$
+		if (libraryType instanceof BasicFBType || libraryType instanceof SimpleFBType) { // $NON-NLS-1$
 			pwH.println("  FORTE_" //$NON-NLS-1$
 					+ name + "(CStringDictionary::TStringId pa_nInstanceNameId, CResource *pa_poSrcRes) : "); //$NON-NLS-1$
 			pwH.print("       " //$NON-NLS-1$
@@ -829,8 +845,10 @@
 		if (type.equals("ST")) { //$NON-NLS-1$
 			structuredTextEmitter.exportStructuredTextAlgorithm(src, pwCPP);
 		} else {
-			pwCPP.println("#error Algorithm of type: '" + type //$NON-NLS-1$
-					+ "' not supported!!!"); //$NON-NLS-1$
+			pwCPP.println("#pragma GCC warning \"Algorithm of type: '" + type //$NON-NLS-1$
+					+ "' may lead to unexpected results\"!"); //$NON-NLS-1$
+			pwCPP.println("#pragma message (\"warning Algorithm of type: '" + type //$NON-NLS-1$
+					+ "' may lead to unexpected results!\")"); //$NON-NLS-1$
 			pwCPP.println(src);
 		}
 
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/editparts/ECTransitionEditPart.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/editparts/ECTransitionEditPart.java
index 194f0de..f450b93 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/editparts/ECTransitionEditPart.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/editparts/ECTransitionEditPart.java
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * Copyright (c) 2008 - 2017 Profactor GmbH, TU Wien ACIN, fortiss GmbH
  * 				 2019 Johannes Kepler University Linz
- * 
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -12,6 +12,7 @@
  *   Gerhard Ebenhofer, Ingo Hengy, Alois Zoitl, Monika Wenger
  *     - initial API and implementation and/or initial documentation
  *   Alois Zoitl - extracted TransitionFigure code and changed to cubic spline
+ *   Alois Zoitl - reworked transition and handle widths
  *******************************************************************************/
 package org.eclipse.fordiac.ide.fbtypeeditor.ecc.editparts;
 
@@ -27,11 +28,13 @@
 import org.eclipse.fordiac.ide.fbtypeeditor.ecc.policies.TransitionBendPointEditPolicy;
 import org.eclipse.fordiac.ide.gef.editparts.AbstractDirectEditableEditPart;
 import org.eclipse.fordiac.ide.gef.editparts.ZoomScalableFreeformRootEditPart;
+import org.eclipse.fordiac.ide.gef.policies.FeedbackConnectionEndpointEditPolicy;
 import org.eclipse.fordiac.ide.model.libraryElement.AdapterDeclaration;
 import org.eclipse.fordiac.ide.model.libraryElement.AdapterEvent;
 import org.eclipse.fordiac.ide.model.libraryElement.ECTransition;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
 import org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration;
+import org.eclipse.fordiac.ide.ui.preferences.ConnectionPreferenceValues;
 import org.eclipse.fordiac.ide.util.STStringTokenHandling;
 import org.eclipse.gef.DragTracker;
 import org.eclipse.gef.EditPolicy;
@@ -40,7 +43,6 @@
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editparts.AbstractConnectionEditPart;
 import org.eclipse.gef.editpolicies.ConnectionEditPolicy;
-import org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy;
 import org.eclipse.gef.editpolicies.XYLayoutEditPolicy;
 import org.eclipse.gef.requests.ChangeBoundsRequest;
 import org.eclipse.gef.requests.CreateRequest;
@@ -48,6 +50,8 @@
 
 public class ECTransitionEditPart extends AbstractConnectionEditPart {
 
+	private static final int NORMAL_WIDTH = 2;
+
 	private final EContentAdapter adapter = new EContentAdapter() {
 		@Override
 		public void notifyChanged(Notification notification) {
@@ -135,7 +139,8 @@
 	protected void createEditPolicies() {
 		// // Selection handle edit policy.
 		// // Makes the connection show a feedback, when selected by the user.
-		installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new ConnectionEndpointEditPolicy());
+		installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,
+				new FeedbackConnectionEndpointEditPolicy(NORMAL_WIDTH, ConnectionPreferenceValues.SELECTED_LINE_WIDTH));
 
 		installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new TransitionBendPointEditPolicy(getModel()));
 
@@ -204,7 +209,9 @@
 
 	@Override
 	protected IFigure createFigure() {
-		return new ECTransitionFigure(getModel());
+		ECTransitionFigure figure = new ECTransitionFigure(getModel());
+		figure.setLineWidth(NORMAL_WIDTH);
+		return figure;
 	}
 
 	@Override
@@ -225,17 +232,14 @@
 			super.deactivate();
 			getModel().eAdapters().remove(adapter);
 			getModel().getECC().eAdapters().remove(adapter);
-
 			getModel().getECC().getBasicFBType().getInterfaceList().eAdapters().remove(interfaceAdapter);
 		}
 	}
 
 	public void highlight(boolean highlight) {
 		PolylineConnection pc = getConnectionFigure();
-		if (highlight && pc != null) {
-			pc.setLineWidth(3);
-		} else if (!highlight && pc != null) {
-			pc.setLineWidth(2);
+		if (null != pc) {
+			pc.setLineWidth((highlight) ? ConnectionPreferenceValues.HIGHLIGTHED_LINE_WIDTH : NORMAL_WIDTH);
 		}
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/figures/ECTransitionFigure.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/figures/ECTransitionFigure.java
index 6e4bc42..391bb67 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/figures/ECTransitionFigure.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/figures/ECTransitionFigure.java
@@ -106,7 +106,6 @@
 	private final TransitionOrderDecorator transitionOrderDecorator;
 
 	public ECTransitionFigure(ECTransition ecTransition) {
-		setLineWidth(2);
 		setAntialias(SWT.ON);
 		setForegroundColor(PreferenceGetter.getColor(PreferenceConstants.P_ECC_TRANSITION_COLOR));
 
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/policies/TransitionBendPointEditPolicy.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/policies/TransitionBendPointEditPolicy.java
index 67f0246..4f9eb42 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/policies/TransitionBendPointEditPolicy.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.ecc/src/org/eclipse/fordiac/ide/fbtypeeditor/ecc/policies/TransitionBendPointEditPolicy.java
@@ -1,6 +1,7 @@
 /*******************************************************************************
  * Copyright (c) 2013 fortiss GmbH
- * 
+ * 				 2019 Johannes Kepler University
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -8,8 +9,8 @@
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
- *   Alois Zoitl
- *     - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *               - increased size of middle bendpoint
  *******************************************************************************/
 package org.eclipse.fordiac.ide.fbtypeeditor.ecc.policies;
 
@@ -21,6 +22,7 @@
 import org.eclipse.draw2d.geometry.PointList;
 import org.eclipse.fordiac.ide.fbtypeeditor.ecc.commands.MoveBendpointCommand;
 import org.eclipse.fordiac.ide.model.libraryElement.ECTransition;
+import org.eclipse.fordiac.ide.ui.preferences.ConnectionPreferenceValues;
 import org.eclipse.gef.ConnectionEditPart;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editpolicies.BendpointEditPolicy;
@@ -62,13 +64,8 @@
 	 * @see SelectionHandlesEditPolicy#createSelectionHandles()
 	 */
 	@Override
-	@SuppressWarnings("rawtypes")
-	protected List createSelectionHandles() {
-		return createHandlesForUserBendpoints();
-	}
-
 	@SuppressWarnings({ "rawtypes", "unchecked" })
-	private List createHandlesForUserBendpoints() {
+	protected List createSelectionHandles() {
 		List list = new ArrayList();
 		ConnectionEditPart connEP = (ConnectionEditPart) getHost();
 		PointList points = getConnection().getPoints();
@@ -78,7 +75,7 @@
 
 		if (bendPoints == null) {
 			bendPoints = new ArrayList();
-		}else if (!bendPoints.isEmpty()) {
+		} else if (!bendPoints.isEmpty()) {
 			currBendPoint = ((Bendpoint) bendPoints.get(0)).getLocation();
 		}
 
@@ -86,7 +83,7 @@
 			// If the current user bendpoint matches a bend location, show a move handle
 			if (i < points.size() - 1 && bendPointIndex < bendPoints.size()
 					&& currBendPoint.equals(points.getPoint(i + 1))) {
-				list.add(new BendpointMoveHandle(connEP, bendPointIndex, i + 1));
+				list.add(createBendPointMoveHandle(connEP, bendPointIndex, i));
 
 				// Go to the next user bendpoint
 				bendPointIndex++;
@@ -98,4 +95,10 @@
 
 		return list;
 	}
+
+	private static BendpointMoveHandle createBendPointMoveHandle(ConnectionEditPart connEP, int bendPointIndex, int i) {
+		BendpointMoveHandle handle = new BendpointMoveHandle(connEP, bendPointIndex, i + 1);
+		handle.setPreferredSize(ConnectionPreferenceValues.HANDLE_SIZE, ConnectionPreferenceValues.HANDLE_SIZE);
+		return handle;
+	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.fbtester/src/org/eclipse/fordiac/ide/fbtypeeditor/fbtester/editparts/TestEditPart.java b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.fbtester/src/org/eclipse/fordiac/ide/fbtypeeditor/fbtester/editparts/TestEditPart.java
index 5313b20..2ab4b8a 100644
--- a/plugins/org.eclipse.fordiac.ide.fbtypeeditor.fbtester/src/org/eclipse/fordiac/ide/fbtypeeditor/fbtester/editparts/TestEditPart.java
+++ b/plugins/org.eclipse.fordiac.ide.fbtypeeditor.fbtester/src/org/eclipse/fordiac/ide/fbtypeeditor/fbtester/editparts/TestEditPart.java
@@ -291,7 +291,7 @@
 
 	@Override
 	public String getSpecificLayer() {
-		return ZoomScalableFreeformRootEditPart.TOPLAYER;
+		return ZoomScalableFreeformRootEditPart.TOP_LAYER;
 	}
 
 	/**
diff --git a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ValueEditPart.java b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ValueEditPart.java
index 5d67d75..b2865f5 100644
--- a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ValueEditPart.java
+++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ValueEditPart.java
@@ -1,6 +1,6 @@
 /*******************************************************************************
  * Copyright (c) 2008, 2009, 2012, 2014 - 2017 Profactor GbmH, fortiss GmbH
- * 				 2019 Johannes Kepler University
+ * 				 2019 Johannes Kepler University Linz
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -11,16 +11,16 @@
  * Contributors:
  *   Gerhard Ebenhofer, Monika Wenger, Alois Zoitl
  *     - initial API and implementation and/or initial documentation
- *   Alois Zoitl - cleaned up some code
+ *   Alois Zoitl - added preference driven max width for value edit parts
  *******************************************************************************/
 package org.eclipse.fordiac.ide.gef.editparts;
 
 import org.eclipse.draw2d.AncestorListener;
 import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.FigureUtilities;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.PositionConstants;
-import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.emf.common.notify.Notification;
@@ -29,9 +29,11 @@
 import org.eclipse.fordiac.ide.gef.FixedAnchor;
 import org.eclipse.fordiac.ide.gef.figures.ValueToolTipFigure;
 import org.eclipse.fordiac.ide.gef.policies.ValueEditPartChangeEditPolicy;
+import org.eclipse.fordiac.ide.gef.preferences.DiagramPreferences;
 import org.eclipse.fordiac.ide.model.libraryElement.IInterfaceElement;
 import org.eclipse.fordiac.ide.model.libraryElement.LibraryElementPackage;
 import org.eclipse.fordiac.ide.model.libraryElement.Value;
+import org.eclipse.fordiac.ide.ui.preferences.PreferenceConstants;
 import org.eclipse.gef.ConnectionEditPart;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPolicy;
@@ -41,7 +43,10 @@
 import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
 import org.eclipse.gef.tools.DirectEditManager;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.swt.graphics.FontMetrics;
 
 public class ValueEditPart extends AbstractGraphicalEditPart implements NodeEditPart {
 
@@ -49,6 +54,19 @@
 	private EditPart context;
 	private InterfaceEditPart parentPart;
 
+	static int maxWidth = -1;
+
+	private static int getMaxWidth() {
+		if (-1 == maxWidth) {
+			IPreferenceStore pf = Activator.getDefault().getPreferenceStore();
+			int maxLabelSize = pf.getInt(DiagramPreferences.MAX_VALUE_LABEL_SIZE);
+			FontMetrics fm = FigureUtilities
+					.getFontMetrics(JFaceResources.getFontRegistry().get(PreferenceConstants.DIAGRAM_FONT));
+			maxWidth = (int) (maxLabelSize * fm.getAverageCharacterWidth());
+		}
+		return maxWidth;
+	}
+
 	/*
 	 * (non-Javadoc)
 	 *
@@ -81,7 +99,9 @@
 				}
 			});
 		}
+
 		refreshVisuals();
+
 	}
 
 	private Point calculatePos() {
@@ -111,7 +131,7 @@
 	private int calculateWidth() {
 		int width = getFigure().getPreferredSize().width;
 		width = Math.max(40, width);
-		width = Math.min(width, 600);
+		width = Math.min(width, getMaxWidth());
 		return width;
 	}
 
@@ -163,7 +183,6 @@
 				setTextAlignment(PositionConstants.LEFT);
 			}
 
-			setMinimumSize(new Dimension(50, 1));
 			setToolTip(new ValueToolTipFigure(getIInterfaceElement(), getModel()));
 		}
 
@@ -208,10 +227,7 @@
 	}
 
 	protected IFigure createFigureForModel() {
-		if (figure == null) {
-			figure = new ValueFigure();
-		}
-		return figure;
+		return new ValueFigure();
 	}
 
 	@Override
@@ -237,7 +253,7 @@
 	 * @return true, if is input
 	 */
 	public boolean isInput() {
-		return true;
+		return getIInterfaceElement().isIsInput();
 	}
 
 	private IInterfaceElement getIInterfaceElement() {
diff --git a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ZoomScalableFreeformRootEditPart.java b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ZoomScalableFreeformRootEditPart.java
index fa02205..be34914 100644
--- a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ZoomScalableFreeformRootEditPart.java
+++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/editparts/ZoomScalableFreeformRootEditPart.java
@@ -1,7 +1,7 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 - 2018 Profactor GbmH, fortiss GmbH, 
- * 								   Johannes Kepler University 
- * 
+ * Copyright (c) 2008, 2015 - 2018 Profactor GbmH, fortiss GmbH,
+ * 				 2018 - 2019 Johannes Kepler University
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -11,6 +11,8 @@
  * Contributors:
  *   Gerhard Ebenhofer, Alois Zoitl
  *     - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - Changed grid layer so that it shows every 10th and 5th line
+ *                 emphasized
  *******************************************************************************/
 package org.eclipse.fordiac.ide.gef.editparts;
 
@@ -23,6 +25,7 @@
 import org.eclipse.draw2d.FreeformLayout;
 import org.eclipse.draw2d.Graphics;
 import org.eclipse.draw2d.LayeredPane;
+import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.DragTracker;
 import org.eclipse.gef.Request;
 import org.eclipse.gef.editparts.GridLayer;
@@ -38,85 +41,139 @@
 import org.eclipse.ui.IWorkbenchPartSite;
 import org.eclipse.ui.handlers.IHandlerService;
 
-/**
- * @author Gerhard Ebenhofer, gerhard.ebenhofer@profactor.at
- * 
- */
-public class ZoomScalableFreeformRootEditPart extends
-		ScalableFreeformRootEditPart {
+public class ZoomScalableFreeformRootEditPart extends ScalableFreeformRootEditPart {
 
-	/** MarqueeDragTracker which deselects all elements on right click if nothing
-	 *  so that the correct conext menu is shown. 
-	 *  We are only here if there is no element under the cursor.
+	/**
+	 * Grid layer that draws the grid in dashed lines and every X line solid to give
+	 * the grid more structure
+	 */
+	private static class MajorMinorGridLayer extends GridLayer {
+		private static final int MAJOR_INTERLEAVE = 10; // draw each 10th line thicker dashed to give the grid more
+														// structure
+		private static final int MEDIUM_INTERLEAVE = 5; // draw each 5th line medium dashed to give the grid more
+														// structure
+
+		private static final float[] GRID_MINOR_DASHES_STYLE = new float[] { 1.0f, 5.0f };
+		private static final float[] GRID_MEDIUM_DASHES_STYLE = new float[] { 2.0f, 4.0f };
+		private static final float[] GRID_MAJOR_DASHES_STYLE = new float[] { 4.0f, 2.0f };
+
+		@Override
+		protected void paintGrid(final Graphics g) {
+			int origLineStyle = g.getLineStyle();
+			g.setLineStyle(Graphics.LINE_CUSTOM);
+
+			Rectangle clip = g.getClip(Rectangle.SINGLETON);
+
+			if (gridX > 0) {
+				drawVerLines(g, clip);
+			}
+
+			if (gridY > 0) {
+				drawHorLines(g, clip);
+			}
+			g.setLineStyle(origLineStyle);
+		}
+
+		private void drawVerLines(final Graphics g, Rectangle clip) {
+			int majorInterleaveX = gridX * MAJOR_INTERLEAVE;
+			int medInterleaveX = gridX * MEDIUM_INTERLEAVE;
+			for (int i = getLineStart(origin.x, clip.x, gridX); i < clip.x + clip.width; i += gridX) {
+				setLineStyle(g, i, origin.x, majorInterleaveX, medInterleaveX);
+				g.drawLine(i, clip.y, i, clip.y + clip.height);
+			}
+		}
+
+		private void drawHorLines(final Graphics g, Rectangle clip) {
+			int majorInterleaveY = gridY * MAJOR_INTERLEAVE;
+			int medInterleaveY = gridY * MEDIUM_INTERLEAVE;
+			for (int i = getLineStart(origin.y, clip.y, gridY); i < clip.y + clip.height; i += gridY) {
+				setLineStyle(g, i, origin.y, majorInterleaveY, medInterleaveY);
+				g.drawLine(clip.x, i, clip.x + clip.width, i);
+			}
+		}
+
+		private static int getLineStart(int origin, int clip, int distance) {
+			int newOrigin = origin;
+			if (origin >= clip) {
+				while (newOrigin - distance >= clip) {
+					newOrigin -= distance;
+				}
+			} else {
+				while (newOrigin < clip) {
+					newOrigin += distance;
+				}
+			}
+			return newOrigin;
+		}
+
+		private static void setLineStyle(final Graphics g, final int currLinePos, final int origin,
+				final int majorInterleave, int mediumInterleave) {
+			int delta = origin - currLinePos;
+			if (0 == (delta % majorInterleave)) {
+				g.setLineDash(GRID_MAJOR_DASHES_STYLE);
+			} else if (0 == (delta % mediumInterleave)) {
+				g.setLineDash(GRID_MEDIUM_DASHES_STYLE);
+			} else {
+				g.setLineDash(GRID_MINOR_DASHES_STYLE);
+			}
+		}
+
+	}
+
+	/**
+	 * MarqueeDragTracker which deselects all elements on right click if nothing so
+	 * that the correct conext menu is shown. We are only here if there is no
+	 * element under the cursor.
 	 */
 	public class AdvancedMarqueeDragTracker extends MarqueeDragTracker {
 		@Override
 		protected boolean handleButtonDown(int button) {
-			if(3 == button) {
-				//on right click deselect everything
+			if (3 == button) {
+				// on right click deselect everything
 				getViewer().setSelection(StructuredSelection.EMPTY);
 			}
 			return super.handleButtonDown(button);
 		}
 	}
 
-	public static final String TOPLAYER = "TOPLAYER"; //$NON-NLS-1$
-	private static final float[] GRID_DASHES_STYLE = new float[] { 1.0f, 5.0f };
-	
+	public static final String TOP_LAYER = "TOPLAYER"; //$NON-NLS-1$
+
 	public ZoomScalableFreeformRootEditPart(IWorkbenchPartSite site, ActionRegistry actionRegistry) {
 		configureZoomManger();
 		setupZoomActions(site, actionRegistry);
 	}
-	
-	@Override	
+
+	@Override
 	public DragTracker getDragTracker(Request req) {
 		return new AdvancedMarqueeDragTracker();
 	}
 
-
 	@Override
 	protected LayeredPane createPrintableLayers() {
 		FreeformLayeredPane layeredPane = new FreeformLayeredPane();
 		layeredPane.add(new FreeformLayer(), PRIMARY_LAYER);
 		ConnectionLayer connectionLayer = new ConnectionLayer();
 		layeredPane.add(connectionLayer, CONNECTION_LAYER);
-		
+
 		FreeformLayer topLayer = new FreeformLayer();
 		topLayer.setLayoutManager(new FreeformLayout());
-		layeredPane.add(topLayer, TOPLAYER);
+		layeredPane.add(topLayer, TOP_LAYER);
 		return layeredPane;
 	}
 
 	@Override
 	protected GridLayer createGridLayer() {
-		return new GridLayer(){
-
-			@Override
-			protected void paintGrid(final Graphics g) {
-				int origLineStyle = g.getLineStyle();
-				g.setLineStyle(Graphics.LINE_CUSTOM);
-				g.setLineDash(GRID_DASHES_STYLE);      //set the line style for all grid lines				
-				super.paintGrid(g);
-				g.setLineStyle(origLineStyle);
-			}
-			
-		};
+		return new MajorMinorGridLayer();
 	}
-	
-	
+
 	private void configureZoomManger() {
 		List<String> zoomLevels = new ArrayList<>(3);
 		zoomLevels.add(ZoomManager.FIT_ALL);
 		zoomLevels.add(ZoomManager.FIT_WIDTH);
 		zoomLevels.add(ZoomManager.FIT_HEIGHT);
 		getZoomManager().setZoomLevelContributions(zoomLevels);
-		
-		getZoomManager().setZoomLevels(
-				new double[] { .25, .5, .75, .80, .85, .90, 1.0, 1.5, 2.0, 2.5,
-						3, 4 });
-
-		// TODO __geben -> move ZoomManager.Animate_zooom_in_out to preference page
-		getZoomManager().setZoomAnimationStyle(ZoomManager.ANIMATE_ZOOM_IN_OUT);		
+		getZoomManager().setZoomLevels(new double[] { .25, .5, .75, .80, .85, .90, 1.0, 1.5, 2.0, 2.5, 3, 4 });
+		getZoomManager().setZoomAnimationStyle(ZoomManager.ANIMATE_ZOOM_IN_OUT);
 	}
 
 	private void setupZoomActions(IWorkbenchPartSite site, ActionRegistry actionRegistry) {
@@ -126,13 +183,10 @@
 		actionRegistry.registerAction(zoomOut);
 
 		IHandlerService zoomInService = site.getService(IHandlerService.class);
-		zoomInService.activateHandler(zoomIn.getActionDefinitionId(),
-				new ActionHandler(zoomIn));
+		zoomInService.activateHandler(zoomIn.getActionDefinitionId(), new ActionHandler(zoomIn));
 
 		IHandlerService zoomOutService = site.getService(IHandlerService.class);
-		zoomOutService.activateHandler(zoomOut.getActionDefinitionId(),
-				new ActionHandler(zoomOut));
+		zoomOutService.activateHandler(zoomOut.getActionDefinitionId(), new ActionHandler(zoomOut));
 
-		
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/FeedbackConnectionEndpointEditPolicy.java b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/policies/FeedbackConnectionEndpointEditPolicy.java
similarity index 62%
rename from plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/FeedbackConnectionEndpointEditPolicy.java
rename to plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/policies/FeedbackConnectionEndpointEditPolicy.java
index 1c92e97..ffd2bc4 100644
--- a/plugins/org.eclipse.fordiac.ide.application/src/org/eclipse/fordiac/ide/application/policies/FeedbackConnectionEndpointEditPolicy.java
+++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/policies/FeedbackConnectionEndpointEditPolicy.java
@@ -1,6 +1,6 @@
 /*******************************************************************************
  * Copyright (c) 2008, 2012 Profactor GmbH, TU Wien ACIN
- * 
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -11,70 +11,67 @@
  *   Gerhard Ebenhofer, Alois Zoitl
  *     - initial API and implementation and/or initial documentation
  *******************************************************************************/
-package org.eclipse.fordiac.ide.application.policies;
+package org.eclipse.fordiac.ide.gef.policies;
 
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.fordiac.ide.ui.preferences.ConnectionPreferenceValues;
 import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy;
 
 /**
  * An EditPolicy for showing feedback when selected.
- * 
+ *
  * @author Gerhard Ebenhofer (gerhard.ebenhofer@profactor.at)
  */
-public class FeedbackConnectionEndpointEditPolicy extends
-		ConnectionEndpointEditPolicy {
+public class FeedbackConnectionEndpointEditPolicy extends ConnectionEndpointEditPolicy {
 
-	
-	private int selectedLineWidth = 3;
-	private int unselectedLineWidth = 0;
-	
-	
-	
+	private int selectedLineWidth = ConnectionPreferenceValues.SELECTED_LINE_WIDTH;
+	private int unselectedLineWidth = ConnectionPreferenceValues.NORMAL_LINE_WIDTH;
+
 	public FeedbackConnectionEndpointEditPolicy(int unselectedLineWidth, int selectedLineWidth) {
 		super();
 		this.selectedLineWidth = selectedLineWidth;
 		this.unselectedLineWidth = unselectedLineWidth;
 	}
-	
-	
 
 	public FeedbackConnectionEndpointEditPolicy() {
 		super();
 	}
 
-
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy#addSelectionHandles()
-	 */
 	@Override
-	protected void addSelectionHandles() {
-		super.addSelectionHandles();
+	protected void showSelection() {
+		super.showSelection();
 		getConnectionFigure().setLineWidth(selectedLineWidth);
 	}
 
 	/**
 	 * Gets the connection figure.
-	 * 
+	 *
 	 * @return the connection figure
 	 */
 	protected PolylineConnection getConnectionFigure() {
 		return (PolylineConnection) ((GraphicalEditPart) getHost()).getFigure();
 	}
 
-	/*
-	 *
-	
-	-Javadoc)
-	 * 
-	 * @see org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy#removeSelectionHandles()
-	 */
+	@SuppressWarnings("rawtypes")
 	@Override
-	protected void removeSelectionHandles() {
-		super.removeSelectionHandles();
+	protected List createSelectionHandles() {
+		List list = super.createSelectionHandles();
+		for (Object object : list) {
+			if (object instanceof Figure) {
+				((Figure) object).setPreferredSize(ConnectionPreferenceValues.HANDLE_SIZE,
+						ConnectionPreferenceValues.HANDLE_SIZE);
+			}
+		}
+		return list;
+	}
+
+	@Override
+	protected void hideSelection() {
+		super.hideSelection();
 		getConnectionFigure().setLineWidth(unselectedLineWidth);
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/policies/InterfaceElementSelectionPolicy.java b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/policies/InterfaceElementSelectionPolicy.java
index 3ca070a..ced252f 100644
--- a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/policies/InterfaceElementSelectionPolicy.java
+++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/policies/InterfaceElementSelectionPolicy.java
@@ -1,6 +1,6 @@
 /*******************************************************************************
- * Copyright (c) 2019 Johannes Kepler University 
- * 
+ * Copyright (c) 2019 Johannes Kepler University
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -14,6 +14,7 @@
 
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.fordiac.ide.gef.editparts.InterfaceEditPart;
+import org.eclipse.fordiac.ide.ui.preferences.ConnectionPreferenceValues;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.Request;
 import org.eclipse.gef.RequestConstants;
@@ -24,7 +25,7 @@
 
 public class InterfaceElementSelectionPolicy extends SelectionEditPolicy {
 	/**
-	 * 
+	 *
 	 */
 	private final InterfaceEditPart interfaceEditPart;
 
@@ -37,12 +38,12 @@
 
 	@Override
 	protected void showSelection() {
-		this.interfaceEditPart.setInOutConnectionsWidth(2);
+		this.interfaceEditPart.setInOutConnectionsWidth(ConnectionPreferenceValues.HIGHLIGTHED_LINE_WIDTH);
 	}
 
 	@Override
 	protected void hideSelection() {
-		this.interfaceEditPart.setInOutConnectionsWidth(0);
+		this.interfaceEditPart.setInOutConnectionsWidth(ConnectionPreferenceValues.NORMAL_LINE_WIDTH);
 	}
 
 	@Override
@@ -52,8 +53,7 @@
 
 	@Override
 	public EditPart getTargetEditPart(Request request) {
-		return request.getType().equals(RequestConstants.REQ_SELECTION_HOVER) ? getHost()
-				: null;
+		return request.getType().equals(RequestConstants.REQ_SELECTION_HOVER) ? getHost() : null;
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/DiagramPreferences.java b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/DiagramPreferences.java
index ac5d047..e620f9f 100644
--- a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/DiagramPreferences.java
+++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/DiagramPreferences.java
@@ -1,6 +1,7 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009, 2014, 2015, 2017 Profactor GbmH, fortiss GmbH 
- * 
+ * Copyright (c) 2008, 2009, 2014, 2015, 2017 Profactor GbmH, fortiss GmbH
+ * 				 2019 Johannes Kepler University Linz
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -10,6 +11,7 @@
  * Contributors:
  *   Gerhard Ebenhofer, Alois Zoitl, Jose Cabral
  *     - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - added preference driven max width for value edit parts
  *******************************************************************************/
 package org.eclipse.fordiac.ide.gef.preferences;
 
@@ -31,6 +33,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
@@ -38,25 +41,26 @@
 /**
  * The Class DiagramPreferences.
  */
-public class DiagramPreferences extends FieldEditorPreferencePage implements
-		IWorkbenchPreferencePage {
+public class DiagramPreferences extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
 
 	/** The Constant CONNECTION_ROUTER. */
 	public static final String CONNECTION_ROUTER = "ConnectionRouter"; //$NON-NLS-1$
-	
+
 	/** The Constant SELECTION_COLOR. */
 	public static final String SELECTION_COLOR = "SelectionColor"; //$NON-NLS-1$
-	
+
 	/** The Constant CORNER_DIM. */
 	public static final String CORNER_DIM = "CornerDim"; //$NON-NLS-1$
-	
+
 	public static final String GRID_SPACING = "GridSpacing"; //$NON-NLS-1$
-	
+
 	public static final String SNAP_TO_GRID = "SnapToGrid"; //$NON-NLS-1$
-	
-	public static final String SHOW_GRID    = "ShowGrid";    //$NON-NLS-1$
-	
-	public static final String SHOW_RULERS  = "ShowRulers";  //$NON-NLS-1$
+
+	public static final String SHOW_GRID = "ShowGrid"; //$NON-NLS-1$
+
+	public static final String SHOW_RULERS = "ShowRulers"; //$NON-NLS-1$
+
+	public static final String MAX_VALUE_LABEL_SIZE = "MaxValueLabelSize"; //$NON-NLS-1$
 
 	/**
 	 * Instantiates a new diagram preferences.
@@ -67,8 +71,11 @@
 		setDescription("General Diagram Preferences");
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see
+	 * org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
 	 */
 	@Override
 	public void createFieldEditors() {
@@ -85,13 +92,13 @@
 		// Add the fields to the group
 		BooleanFieldEditor showRulers = new BooleanFieldEditor(SHOW_RULERS, "Show Ruler", group);
 		addField(showRulers);
-		
+
 		BooleanFieldEditor showGrid = new BooleanFieldEditor(SHOW_GRID, "Show Grid", group);
 		addField(showGrid);
 
 		BooleanFieldEditor snapToGrid = new BooleanFieldEditor(SNAP_TO_GRID, "Snap to Grid", group);
 		addField(snapToGrid);
-		
+
 		IntegerFieldEditor gridSpacing = new IntegerFieldEditor(GRID_SPACING, "Grid spacing in pixels", group);
 		gridSpacing.setTextLimit(10);
 		addField(gridSpacing);
@@ -107,8 +114,8 @@
 		Map<String, IConnectionRouterFactory> connectionRouter = new HashMap<>();
 
 		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		IConfigurationElement[] elems = registry.getConfigurationElementsFor(
-				Activator.PLUGIN_ID, "ConnectionRouterProvider"); //$NON-NLS-1$
+		IConfigurationElement[] elems = registry.getConfigurationElementsFor(Activator.PLUGIN_ID,
+				"ConnectionRouterProvider"); //$NON-NLS-1$
 		for (int i = 0; i < elems.length; i++) {
 			IConfigurationElement element = elems[i];
 			try {
@@ -122,7 +129,7 @@
 				Activator.getDefault().logError("Error loading ConnectionRouter", corex); //$NON-NLS-1$
 			}
 		}
-		
+
 		Set<String> keySet = connectionRouter.keySet();
 		String[][] nameArray = new String[keySet.size()][2];
 		int i = 0;
@@ -132,8 +139,7 @@
 			i++;
 		}
 
-		ComboFieldEditor routerEditor = new ComboFieldEditor(CONNECTION_ROUTER,
-				"Default Router", nameArray, router);
+		ComboFieldEditor routerEditor = new ComboFieldEditor(CONNECTION_ROUTER, "Default Router", nameArray, router);
 		addField(routerEditor);
 
 		GridData routerData = new GridData(GridData.FILL_HORIZONTAL);
@@ -148,8 +154,7 @@
 		color.setText("Colors");
 		GridLayout colorLayout = new GridLayout(2, false);
 
-		ColorFieldEditor selectionBorderColor = new ColorFieldEditor(
-				SELECTION_COLOR, "Selection Color", color);
+		ColorFieldEditor selectionBorderColor = new ColorFieldEditor(SELECTION_COLOR, "Selection Color", color);
 
 		addField(selectionBorderColor);
 		color.setLayout(colorLayout);
@@ -160,23 +165,26 @@
 		arc.setText("FB");
 		GridLayout arcLayout = new GridLayout(2, false);
 
-		IntegerFieldEditor integerFieldEditor = new IntegerFieldEditor(CORNER_DIM,
-				"Corner Dimension", arc);
+		IntegerFieldEditor integerFieldEditor = new IntegerFieldEditor(CORNER_DIM, "Corner Dimension", arc);
 		integerFieldEditor.setValidRange(0, 15);
-
 		addField(integerFieldEditor);
+
+		createMaxValueSizeField(getFieldEditorParent());
+
 		arc.setLayout(arcLayout);
 		arc.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-	 */
+	private void createMaxValueSizeField(Composite parent) {
+		IntegerFieldEditor integerFieldEditor = new IntegerFieldEditor(MAX_VALUE_LABEL_SIZE, "Maximum Value Label Size",
+				parent);
+		integerFieldEditor.setValidRange(0, 120);
+		addField(integerFieldEditor);
+	}
+
 	@Override
 	public void init(final IWorkbench workbench) {
+		// nothing to do here
 	}
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/PreferenceInitializer.java b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/PreferenceInitializer.java
index 653c9cb..71a9072 100644
--- a/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/PreferenceInitializer.java
+++ b/plugins/org.eclipse.fordiac.ide.gef/src/org/eclipse/fordiac/ide/gef/preferences/PreferenceInitializer.java
@@ -1,6 +1,7 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2009, 2014, 2015, 2017 Profactor GbmH, fortiss GmbH 
- * 
+ * Copyright (c) 2008, 2009, 2014, 2015, 2017 Profactor GbmH, fortiss GmbH
+ * 				 2019 Johannes Kepler University Linz
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
  * http://www.eclipse.org/legal/epl-2.0.
@@ -10,6 +11,7 @@
  * Contributors:
  *   Gerhard Ebenhofer, Alois Zoitl, Jose Cabral
  *     - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - added preference driven max width for value edit parts
  *******************************************************************************/
 package org.eclipse.fordiac.ide.gef.preferences;
 
@@ -24,12 +26,6 @@
  */
 public class PreferenceInitializer extends AbstractPreferenceInitializer {
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @seeorg.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#
-	 * initializeDefaultPreferences()
-	 */
 	@Override
 	public void initializeDefaultPreferences() {
 		IPreferenceStore store = Activator.getDefault().getPreferenceStore();
@@ -39,5 +35,7 @@
 		store.setDefault(DiagramPreferences.CONNECTION_ROUTER, "Adjustable Router (no Jumplinks)"); //$NON-NLS-1$
 		PreferenceConverter.setDefault(store, DiagramPreferences.SELECTION_COLOR, ColorConstants.gray.getRGB());
 		store.setDefault(DiagramPreferences.CORNER_DIM, 14);
+		store.setDefault(DiagramPreferences.MAX_VALUE_LABEL_SIZE, 25); // big enough to fully show an ip address and
+																		// port
 	}
 }
diff --git a/plugins/org.eclipse.fordiac.ide.master/pom.xml b/plugins/org.eclipse.fordiac.ide.master/pom.xml
index f0f18a4..8a393b1 100644
--- a/plugins/org.eclipse.fordiac.ide.master/pom.xml
+++ b/plugins/org.eclipse.fordiac.ide.master/pom.xml
@@ -30,6 +30,7 @@
 		<module>../org.eclipse.fordiac.ide.fmu</module>
 		<module>../org.eclipse.fordiac.ide.gef</module>
 		<module>../org.eclipse.fordiac.ide.images</module>
+		<module>../org.eclipse.fordiac.ide.metrics</module>
 		<module>../org.eclipse.fordiac.ide.model</module>
 		<module>../org.eclipse.fordiac.ide.model.edit</module>
 		<module>../org.eclipse.fordiac.ide.model.structuredtext</module>
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/.classpath b/plugins/org.eclipse.fordiac.ide.metrics/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/.project b/plugins/org.eclipse.fordiac.ide.metrics/.project
new file mode 100644
index 0000000..5908713
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.fordiac.ide.metrics</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.fordiac.ide.metrics/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.metrics/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b711e41
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Metrics
+Bundle-SymbolicName: org.eclipse.fordiac.ide.metrics;singleton:=true
+Bundle-Version: 1.11.2.qualifier
+Bundle-Activator: org.eclipse.fordiac.ide.metrics.Activator
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.fordiac.ide.ui,
+ org.eclipse.fordiac.ide.model,
+ org.eclipse.fordiac.ide.typemanagement,
+ org.eclipse.core.resources
+Automatic-Module-Name: org.eclipse.fordiac.ide.metrics
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/build.properties b/plugins/org.eclipse.fordiac.ide.metrics/build.properties
new file mode 100644
index 0000000..2b0d95b
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/plugin.xml b/plugins/org.eclipse.fordiac.ide.metrics/plugin.xml
new file mode 100644
index 0000000..e0eb08c
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/plugin.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+    <extension
+         point="org.eclipse.ui.commands">
+       <command
+            categoryId="org.eclipse.fordiac.ide.commands.category"
+            id="org.eclipse.fordiac.ide.metrics.commands.calculateCodeMetrics"
+            name="Calculate Code Metrics">
+      </command>
+    </extension>   
+    <extension
+         point="org.eclipse.ui.handlers">
+         <handler
+            class="org.eclipse.fordiac.ide.metrics.handlers.CalculateCodeMetrics"
+            commandId="org.eclipse.fordiac.ide.metrics.commands.calculateCodeMetrics">
+      </handler>
+    </extension>  
+    <extension
+         point="org.eclipse.ui.menus">
+        <menuContribution
+                locationURI="popup:org.eclipse.ui.popup.any?after=additions">
+         <command
+            commandId="org.eclipse.fordiac.ide.metrics.commands.calculateCodeMetrics"
+            label="Calculate Code Metrics"
+            style="push">
+             <visibleWhen checkEnabled="false">                
+                <with variable="selection" >
+                    <count value="1" />
+                    <iterate
+                          ifEmpty="false">
+                        <or>      
+                            <instanceof value="org.eclipse.fordiac.ide.model.libraryElement.Application" />
+                            <instanceof value="org.eclipse.fordiac.ide.model.libraryElement.SubApp" />
+                            <instanceof value="org.eclipse.fordiac.ide.model.libraryElement.FBType" />
+                            <adapt type="org.eclipse.core.resources.IResource">
+                                <test property="org.eclipse.core.resources.extension" value="fbt" />
+                            </adapt>
+                        </or>                  
+                    </iterate>
+                </with>  
+             </visibleWhen>
+          </command>                       
+        </menuContribution>
+    </extension>        
+</plugin>
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/pom.xml b/plugins/org.eclipse.fordiac.ide.metrics/pom.xml
new file mode 100644
index 0000000..bc2ee9e
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <relativePath>../org.eclipse.fordiac.ide.master/pom.xml</relativePath>
+    <groupId>org.eclipse.fordiac</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.11.2-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>org.eclipse.fordiac.ide.metrics</artifactId>
+  <packaging>eclipse-plugin</packaging>
+<version>1.11.2-SNAPSHOT</version>
+</project> 
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/Activator.java b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/Activator.java
new file mode 100644
index 0000000..b8887d6
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/Activator.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2019 TU Wien, ACIN
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Peter Gsellmann - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.metrics;
+
+import org.eclipse.fordiac.ide.ui.Abstract4DIACUIPlugin;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Abstract4DIACUIPlugin {
+
+	public static final String PLUGIN_ID = " org.eclipse.fordiac.ide.metrics"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/AbstractCodeMetricAnalyzer.java b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/AbstractCodeMetricAnalyzer.java
new file mode 100644
index 0000000..856ba54
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/AbstractCodeMetricAnalyzer.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2019 TU Wien, ACIN, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Peter Gsellmann - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - Changed analysis result to key value pairs
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.metrics.analyzers;
+
+import java.util.List;
+
+import org.eclipse.fordiac.ide.model.libraryElement.Application;
+import org.eclipse.fordiac.ide.model.libraryElement.BasicFBType;
+import org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetwork;
+import org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement;
+import org.eclipse.fordiac.ide.model.libraryElement.FBType;
+import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
+import org.eclipse.fordiac.ide.model.libraryElement.SubApp;
+
+public abstract class AbstractCodeMetricAnalyzer {
+
+	public void calculateMetrics(INamedElement element) {
+		if (element instanceof Application) {
+			analyzeFBNetwork(((Application) element).getFBNetwork());
+		} else if (element instanceof SubApp) {
+			analyzeSubApp((SubApp) element);
+		} else if (element instanceof FBType) {
+			analyzeFBType((FBType) element);
+		}
+	}
+
+	public abstract List<MetricData> getResults();
+
+	private void analyzeFBNetwork(FBNetwork fbNetwork) {
+		for (FBNetworkElement fb : fbNetwork.getNetworkElements()) {
+			if (fb instanceof SubApp) {
+				analyzeSubApp((SubApp) fb);
+			} else {
+				analyzeFBType(fb.getType());
+			}
+		}
+	}
+
+	private void analyzeSubApp(SubApp subApp) {
+		analyzeFBNetwork((null != subApp.getType()) ? subApp.getType().getFBNetwork() : subApp.getSubAppNetwork());
+	}
+
+	private void analyzeFBType(FBType type) {
+		if (type instanceof BasicFBType) {
+			analyzeBFB((BasicFBType) type);
+		} else if (type instanceof CompositeFBType) {
+			analyzeFBNetwork(((CompositeFBType) type).getFBNetwork());
+		}
+	}
+
+	protected abstract void analyzeBFB(BasicFBType basicFBType);
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/CyclomaticComplexity.java b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/CyclomaticComplexity.java
new file mode 100644
index 0000000..4934203
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/CyclomaticComplexity.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2019 TU Wien, ACIN, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Peter Gsellmann - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - Changed analysis result to key value pairs
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.metrics.analyzers;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.fordiac.ide.model.libraryElement.Algorithm;
+import org.eclipse.fordiac.ide.model.libraryElement.BasicFBType;
+import org.eclipse.fordiac.ide.model.libraryElement.ECAction;
+import org.eclipse.fordiac.ide.model.libraryElement.ECC;
+import org.eclipse.fordiac.ide.model.libraryElement.ECState;
+import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
+
+public class CyclomaticComplexity extends AbstractCodeMetricAnalyzer {
+	static final String[] CONDITIONS = { "IF", "FOR", "WHILE", "REPEAT" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+	List<MetricData> metrics = new ArrayList<>();
+	double ccapp = 0.0;
+
+	@Override
+	public void calculateMetrics(INamedElement element) {
+		super.calculateMetrics(element);
+		metrics.add(0, new MetricData("Cyclomatic Number " + element.getName(), ccapp));
+	}
+
+	@Override
+	public List<MetricData> getResults() {
+		return metrics;
+	}
+
+	@Override
+	protected void analyzeBFB(BasicFBType basicFBType) {
+		ECC ecc = basicFBType.getECC();
+
+		double ccfb = (ecc.getECTransition().size() - ecc.getECState().size() + 2);
+
+		for (ECState state : ecc.getECState()) {
+			for (ECAction action : state.getECAction()) {
+				if (null != action.getAlgorithm()) {
+					ccfb += analyzeAlgorithm(action.getAlgorithm());
+				}
+			}
+		}
+
+		ccapp += ccfb;
+		metrics.add(new MetricData("Cyclomatic Number " + basicFBType.getName(), ccfb));
+	}
+
+	private static double analyzeAlgorithm(Algorithm algorithm) {
+		double ccAlg = 0.0;
+		String algText = algorithm.toString();
+		int saveIndex = 0;
+		for (String cond : CONDITIONS) {
+			int lastIndex = 0;
+			while (-1 != lastIndex) {
+				if (cond.equals("REPEAT")) {
+					saveIndex = algText.indexOf(cond + "\r\n", lastIndex);
+				} else {
+					saveIndex = algText.toString().indexOf(cond + " ", lastIndex);
+				}
+				if (0 != saveIndex) {
+					lastIndex = saveIndex;
+					if (-1 != lastIndex) {
+						ccAlg++;
+						lastIndex += cond.length();
+					}
+				}
+			}
+		}
+		return ccAlg;
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/HalsteadMetric.java b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/HalsteadMetric.java
new file mode 100644
index 0000000..3f5dcba
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/HalsteadMetric.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2019 TU Wien, ACIN, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Peter Gsellmann - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - Changed analysis result to key value pairs
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.metrics.analyzers;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.fordiac.ide.model.libraryElement.Algorithm;
+import org.eclipse.fordiac.ide.model.libraryElement.BasicFBType;
+import org.eclipse.fordiac.ide.model.libraryElement.ECAction;
+import org.eclipse.fordiac.ide.model.libraryElement.ECC;
+import org.eclipse.fordiac.ide.model.libraryElement.ECState;
+import org.eclipse.fordiac.ide.model.libraryElement.ECTransition;
+import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
+
+public class HalsteadMetric extends AbstractCodeMetricAnalyzer {
+	private static final int ST_OPERATOR_COUNT = 16;
+	private static final String[] ST_OPERATORS = { "**", ":=", "<=", ">=", "<>", "-", "NOT", "*", "/", "MOD", "+", "<", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$ //$NON-NLS-12$
+			">", //$NON-NLS-1$
+			"=", "AND", "OR", "XOR" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+	private static final int[] ST_OPERANDS_WEIGHT = { 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
+
+	private double operandST = 0.0;
+	private double operatorST = 0.0;
+	private double uniqueOperatorST = 0.0;
+	private double operators = 0;
+	private double operands = 0;
+	private double uniqueOperands = 0;
+	private double uniqueOperator = 0;
+	private int actionCount = 0;
+	private int[] opCount = new int[ST_OPERATOR_COUNT];
+	private int uniqueTrans = 0;
+	private List<String> alg = new ArrayList<>();
+	private List<String> transCond = new ArrayList<>();
+	private List<String> actions = new ArrayList<>();
+	private List<String> event = new ArrayList<>();
+
+	@Override
+	public void calculateMetrics(INamedElement element) {
+
+		super.calculateMetrics(element);
+
+		uniqueOperands += uniqueTrans;
+		uniqueOperator += uniqueTrans;
+		operators += actions.size() + transCond.size();
+		operands += (event.size() + alg.size() + transCond.size());
+
+		for (int i = 0; i < opCount.length; i++) {
+			if (opCount[i] >= 1.0) {
+				uniqueOperatorST++;
+			}
+		}
+
+	}
+
+	@Override
+	protected void analyzeBFB(BasicFBType basicFBType) {
+		ECC ecc = basicFBType.getECC();
+		for (ECTransition trans : ecc.getECTransition()) {
+			if (!transCond.contains(trans.getConditionExpression())) {
+				uniqueTrans += 1;
+			}
+			transCond.add(trans.getConditionExpression());
+		}
+
+		for (ECState state : ecc.getECState()) {
+			for (ECAction action : state.getECAction()) {
+				analyzeAction(action);
+			}
+		}
+	}
+
+	private void analyzeAction(ECAction action) {
+		if (!actions.contains("Action " + actionCount)) {
+			uniqueOperator += 1;
+		}
+		actions.add("Action " + actionCount);
+
+		if (null != action.getOutput()) {
+			if (!event.contains(action.getOutput().getName())) {
+				uniqueOperands += 1;
+			}
+			event.add(action.getOutput().getName());
+		}
+
+		if (null != action.getAlgorithm()) {
+			analyzeAlgorithm(action.getAlgorithm());
+		}
+		actionCount++;
+	}
+
+	private void analyzeAlgorithm(Algorithm algorithm) {
+		if (!alg.contains(algorithm.getName())) {
+			uniqueOperands += 1;
+		}
+		alg.add(algorithm.getName());
+		String algo = algorithm.toString();
+		int count = 0;
+		for (String op : ST_OPERATORS) {
+			int lastIndex = 0;
+			while (-1 != lastIndex) {
+				lastIndex = algo.indexOf(op, lastIndex);
+				if (-1 != lastIndex) {
+					operatorST++;
+					opCount[count] += 1;
+					operandST += ST_OPERANDS_WEIGHT[count];
+					String sub1 = algo.substring(0, lastIndex);
+					String sub2 = algo.substring(lastIndex + op.length(), algo.length());
+					algo = sub1.concat(sub2);
+				}
+			}
+			count++;
+		}
+	}
+
+	@Override
+	public List<MetricData> getResults() {
+		double n2Major = operands + operandST;
+		double n2 = uniqueOperands + operandST;
+		double n1Major = operators + operatorST;
+		double n1 = uniqueOperator + uniqueOperatorST;
+
+		List<MetricData> results = new ArrayList<>();
+
+		results.add(new MetricData("Distinct operators ", n1));
+		results.add(new MetricData("Distinct operands ", n2));
+		results.add(new MetricData("Total number of operators ", n1Major));
+		results.add(new MetricData("Total number of operands ", n2Major));
+		results.add(new MetricData("Distinct operators ST ", uniqueOperatorST));
+		results.add(new MetricData("Distinct operands ST ", operandST));
+		results.add(new MetricData("Total number of operators ST ", operatorST));
+		results.add(new MetricData("Total number of operands ST ", operandST));
+
+		double nMAjor = n1Major + n2Major;
+		double n = n1 + n2;
+		double nHat = (n1 * Math.log(n1) / Math.log(2) + n2 * Math.log(n2) / Math.log(2));
+		double pr = nHat / nMAjor;
+		double v = nMAjor * Math.log(n) / Math.log(2);
+		double d = n1 / 2 * n2Major / n2;
+		double e = d * v;
+
+		results.add(new MetricData("Program Length ", nMAjor));
+		results.add(new MetricData("Program vocabulary ", n));
+		results.add(new MetricData("Estimated length ", nHat));
+		results.add(new MetricData("Purity ratio ", pr));
+		results.add(new MetricData("Program volume ", v));
+		results.add(new MetricData("Difficulty ", d));
+		results.add(new MetricData("Program Effort ", e));
+
+		return results;
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/MetricData.java b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/MetricData.java
new file mode 100644
index 0000000..f53a700
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/analyzers/MetricData.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+
+package org.eclipse.fordiac.ide.metrics.analyzers;
+
+public class MetricData {
+
+	private final String name;
+
+	private final double value;
+
+	public MetricData(String name, double value) {
+		super();
+		this.name = name;
+		this.value = value;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public double getValue() {
+		return value;
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/handlers/CalculateCodeMetrics.java b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/handlers/CalculateCodeMetrics.java
new file mode 100644
index 0000000..ac4c138
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.metrics/src/org/eclipse/fordiac/ide/metrics/handlers/CalculateCodeMetrics.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2019 TU Wien, ACIN, Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Peter Gsellmann - initial API and implementation and/or initial documentation
+ *   Alois Zoitl - Changed analysis result to key value pairs
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.metrics.handlers;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.fordiac.ide.metrics.analyzers.AbstractCodeMetricAnalyzer;
+import org.eclipse.fordiac.ide.metrics.analyzers.CyclomaticComplexity;
+import org.eclipse.fordiac.ide.metrics.analyzers.HalsteadMetric;
+import org.eclipse.fordiac.ide.metrics.analyzers.MetricData;
+import org.eclipse.fordiac.ide.model.Palette.FBTypePaletteEntry;
+import org.eclipse.fordiac.ide.model.Palette.Palette;
+import org.eclipse.fordiac.ide.model.Palette.PaletteEntry;
+import org.eclipse.fordiac.ide.model.libraryElement.INamedElement;
+import org.eclipse.fordiac.ide.model.typelibrary.TypeLibrary;
+import org.eclipse.fordiac.ide.typemanagement.util.FBTypeUtils;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class CalculateCodeMetrics extends AbstractHandler {
+
+	public static class MetricsResultLabelProvider extends LabelProvider implements ITableLabelProvider {
+		private static final DecimalFormat decimalFormat = new DecimalFormat("#0.00");
+
+		@Override
+		public Image getColumnImage(Object element, int columnIndex) {
+			return null;
+		}
+
+		@Override
+		public String getColumnText(Object element, int columnIndex) {
+			if (element instanceof MetricData) {
+				switch (columnIndex) {
+				case 0:
+					return ((MetricData) element).getName();
+				case 1:
+					return decimalFormat.format(((MetricData) element).getValue());
+				default:
+					break;
+				}
+			}
+			return element.toString();
+		}
+
+	}
+
+	private static class MetricsResultDialog extends MessageDialog {
+
+		private final List<MetricData> data;
+
+		public MetricsResultDialog(Shell parent, INamedElement element, final List<MetricData> data) {
+			super(parent, "Calculated Metrics for " + element.getName(), null, null, INFORMATION, 0,
+					IDialogConstants.OK_LABEL);
+			this.data = data;
+		}
+
+		@Override
+		protected Control createMessageArea(Composite composite) {
+			final Composite body = (Composite) super.createMessageArea(composite);
+
+			final TableViewer viewer = new TableViewer(body, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI);
+			GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false)
+					.hint(convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), SWT.DEFAULT)
+					.applyTo(viewer.getTable());
+			configureTableColumns(viewer.getTable());
+
+			viewer.setContentProvider(new ArrayContentProvider());
+			viewer.setLabelProvider(new MetricsResultLabelProvider());
+			viewer.setInput(data);
+
+			return body;
+		}
+
+		private static void configureTableColumns(Table table) {
+			new TableColumn(table, SWT.LEFT).setText("Metric");
+			new TableColumn(table, SWT.RIGHT).setText("Value");
+
+			TableLayout layout = new TableLayout();
+			layout.addColumnData(new ColumnWeightData(65, 100));
+			layout.addColumnData(new ColumnWeightData(25, 10));
+			table.setLayout(layout);
+
+			table.setLinesVisible(true);
+			table.setHeaderVisible(true);
+		}
+	}
+
+	@Override
+	public Object execute(ExecutionEvent event) throws org.eclipse.core.commands.ExecutionException {
+		List<MetricData> result = new ArrayList<>();
+
+		INamedElement selectedElement = getSelectedElement(
+				(StructuredSelection) HandlerUtil.getCurrentSelection(event));
+
+		if (null != selectedElement) {
+			calculateMetrics(selectedElement, result);
+			displayResults(selectedElement, result, HandlerUtil.getActiveWorkbenchWindowChecked(event));
+		}
+		return null;
+	}
+
+	private static INamedElement getSelectedElement(StructuredSelection currentSelection) {
+		Object obj = currentSelection.getFirstElement();
+
+		if (obj instanceof IFile) {
+			return checkSelectedFile((IFile) obj);
+		}
+		return (obj instanceof INamedElement) ? (INamedElement) obj : null;
+	}
+
+	private static INamedElement checkSelectedFile(IFile file) {
+		Palette palette = FBTypeUtils.getPalletteForFBTypeFile(file);
+		if (palette != null) {
+			PaletteEntry entry = TypeLibrary.getPaletteEntry(palette, file);
+			if (entry instanceof FBTypePaletteEntry) {
+				return ((FBTypePaletteEntry) entry).getFBType();
+			}
+		}
+		return null;
+	}
+
+	private static void calculateMetrics(INamedElement element, List<MetricData> result) {
+		List<AbstractCodeMetricAnalyzer> analyzers = getAnalyzers();
+		for (AbstractCodeMetricAnalyzer analyzer : analyzers) {
+			analyzer.calculateMetrics(element);
+			result.addAll(analyzer.getResults());
+		}
+	}
+
+	private static List<AbstractCodeMetricAnalyzer> getAnalyzers() {
+		List<AbstractCodeMetricAnalyzer> analyzers = new ArrayList<>();
+		analyzers.add(new CyclomaticComplexity());
+		analyzers.add(new HalsteadMetric());
+		return analyzers;
+	}
+
+	private static void displayResults(INamedElement element, List<MetricData> result,
+			IWorkbenchWindow workbenchWindow) {
+		MetricsResultDialog resultDialog = new MetricsResultDialog(workbenchWindow.getShell(), element, result);
+		resultDialog.open();
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/editparts/AbstractMonitoringBaseEditPart.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/editparts/AbstractMonitoringBaseEditPart.java
index ccaab04..47c81f5 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/editparts/AbstractMonitoringBaseEditPart.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/editparts/AbstractMonitoringBaseEditPart.java
@@ -184,7 +184,7 @@
 
 	@Override
 	public String getSpecificLayer() {
-		return ZoomScalableFreeformRootEditPart.TOPLAYER;
+		return ZoomScalableFreeformRootEditPart.TOP_LAYER;
 	}
 	
 	@Override
diff --git a/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/LinkEditPart.java b/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/LinkEditPart.java
index f0376bc..b9293d6 100644
--- a/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/LinkEditPart.java
+++ b/plugins/org.eclipse.fordiac.ide.systemconfiguration/src/org/eclipse/fordiac/ide/systemconfiguration/editparts/LinkEditPart.java
@@ -17,7 +17,7 @@
 import org.eclipse.draw2d.PolylineConnection;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.util.EContentAdapter;
-import org.eclipse.fordiac.ide.application.policies.FeedbackConnectionEndpointEditPolicy;
+import org.eclipse.fordiac.ide.gef.policies.FeedbackConnectionEndpointEditPolicy;
 import org.eclipse.fordiac.ide.gef.router.BendpointPolicyRouter;
 import org.eclipse.fordiac.ide.gef.router.RouterUtil;
 import org.eclipse.fordiac.ide.model.libraryElement.Color;
diff --git a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/navigator/FBTypeLabelProvider.java b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/navigator/FBTypeLabelProvider.java
index 96cadc6..8fde213 100644
--- a/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/navigator/FBTypeLabelProvider.java
+++ b/plugins/org.eclipse.fordiac.ide.typemanagement/src/org/eclipse/fordiac/ide/typemanagement/navigator/FBTypeLabelProvider.java
@@ -1,6 +1,10 @@
 /*******************************************************************************
  * Copyright (c) 2011 - 2017 TU Wien ACIN, fortiss GmbH
+<<<<<<< HEAD
+ * 				 2019 Johannes Kepler University Linz
+=======
  * 				 2019 Johannes Kepler University
+>>>>>>> 1.11.x
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License 2.0 which is available at
@@ -10,8 +14,12 @@
  *
  * Contributors:
  *   Alois Zoitl - initial API and implementation and/or initial documentation
+<<<<<<< HEAD
+ *   			 - cleaned up issues reported by sonarlint
+=======
  *   			 - made the getImageForFile public so it can be used by the
  *                 palette, some code cleanup
+>>>>>>> 1.11.x
  *******************************************************************************/
 package org.eclipse.fordiac.ide.typemanagement.navigator;
 
@@ -71,26 +79,18 @@
 	}
 
 	private static Image getImageForFBTypeFile(IFile element) {
-		Image image = null;
-		Palette palette = FBTypeUtils.getPalletteForFBTypeFile(element);
-		if (palette != null) {
-			PaletteEntry entry = TypeLibrary.getPaletteEntry(palette, element);
+		FBType type = getFBTypeFromFile(element);
 
-			if (null != entry) {
-				FBType type = ((FBTypePaletteEntry) entry).getFBType();
-				if (type instanceof BasicFBType) {
-					image = FordiacImage.ICON_BASIC_FB.getImage();
-				} else if (type instanceof CompositeFBType) {
-					image = FordiacImage.ICON_COMPOSITE_FB.getImage();
-				} else if (type instanceof ServiceInterfaceFBType) {
-					image = FordiacImage.ICON_SIFB.getImage();
-				}
-			} else {
-				// partly load file to determine type
-				image = checkUnloadedFBType(element);
-			}
+		if (type instanceof BasicFBType) {
+			return FordiacImage.ICON_BASIC_FB.getImage();
+		} else if (type instanceof CompositeFBType) {
+			return FordiacImage.ICON_COMPOSITE_FB.getImage();
+		} else if (type instanceof ServiceInterfaceFBType) {
+			return FordiacImage.ICON_SIFB.getImage();
 		}
-		return image;
+
+		// partly load file to determine type
+		return checkUnloadedFBType(element);
 	}
 
 	private static boolean fileHasProblems(IFile element) {
@@ -105,9 +105,7 @@
 
 	private static Image checkUnloadedFBType(IFile element) {
 		Image image = null;
-		Scanner scanner = null;
-		try {
-			scanner = new Scanner(element.getContents());
+		try (Scanner scanner = new Scanner(element.getContents())) {
 			if (null != scanner.findWithinHorizon("BasicFB", 0)) { //$NON-NLS-1$
 				image = FordiacImage.ICON_BASIC_FB.getImage();
 
@@ -115,17 +113,12 @@
 				scanner.reset();
 				if (null != scanner.findWithinHorizon("FBNetwork", 0)) { //$NON-NLS-1$
 					image = FordiacImage.ICON_COMPOSITE_FB.getImage();
-
 				} else {
 					image = FordiacImage.ICON_SIFB.getImage();
 				}
 			}
 		} catch (Exception e) {
 			Activator.getDefault().logError(e.getMessage(), e);
-		} finally {
-			if (null != scanner) {
-				scanner.close();
-			}
 		}
 
 		return image;
@@ -140,9 +133,7 @@
 	}
 
 	private static String getTextForFBFile(IFile element) {
-
 		String text = null;
-
 		if (TypeLibraryTags.ADAPTER_TYPE_FILE_ENDING.equalsIgnoreCase(element.getFileExtension())
 				|| TypeLibraryTags.FB_TYPE_FILE_ENDING.equalsIgnoreCase(element.getFileExtension())
 				|| TypeLibraryTags.SUBAPP_TYPE_FILE_ENDING.equalsIgnoreCase(element.getFileExtension())) {
@@ -162,30 +153,46 @@
 	private static String getDescriptionForFBFile(IFile fbtFile) {
 		FBType type = null;
 		if (TypeLibraryTags.FB_TYPE_FILE_ENDING.equalsIgnoreCase(fbtFile.getFileExtension())) {
-			Palette palette = FBTypeUtils.getPalletteForFBTypeFile(fbtFile);
-			if (palette != null) {
-				PaletteEntry entry = TypeLibrary.getPaletteEntry(palette, fbtFile);
-
-				if (null != entry) {
-					type = ((FBTypePaletteEntry) entry).getFBType();
-				}
-			}
-		} else {
-			if (TypeLibraryTags.ADAPTER_TYPE_FILE_ENDING.equalsIgnoreCase(fbtFile.getFileExtension())) {
-				Palette palette = FBTypeUtils.getPalletteForFBTypeFile(fbtFile);
-				if (palette != null) {
-					PaletteEntry entry = TypeLibrary.getPaletteEntry(palette, fbtFile);
-					if (null != entry) {
-						type = ((AdapterTypePaletteEntry) entry).getType().getAdapterFBType();
-					}
-				}
-			}
+			type = getFBTypeFromFile(fbtFile);
+		} else if (TypeLibraryTags.ADAPTER_TYPE_FILE_ENDING.equalsIgnoreCase(fbtFile.getFileExtension())) {
+			type = getAdapterTypeForFile(fbtFile);
 		}
 
 		if (null != type) {
-			return type.getName() + ": " + ((null == type.getComment()) ? "" : type.getComment()); //$NON-NLS-1$ //$NON-NLS-2$
+			return generateTypeDescriptionString(type);
 		}
+		return null;
+	}
 
+	private static String generateTypeDescriptionString(FBType type) {
+		String description = type.getName() + ": "; //$NON-NLS-1$
+		if (null != type.getComment()) {
+			description += type.getComment();
+		}
+		return description;
+	}
+
+	private static FBType getAdapterTypeForFile(IFile file) {
+		PaletteEntry entry = getPalletEntryForFile(file);
+		if (entry instanceof AdapterTypePaletteEntry) {
+			return ((AdapterTypePaletteEntry) entry).getType().getAdapterFBType();
+		}
+		return null;
+	}
+
+	private static FBType getFBTypeFromFile(IFile file) {
+		PaletteEntry entry = getPalletEntryForFile(file);
+		if (entry instanceof FBTypePaletteEntry) {
+			return ((FBTypePaletteEntry) entry).getFBType();
+		}
+		return null;
+	}
+
+	private static PaletteEntry getPalletEntryForFile(IFile file) {
+		Palette palette = FBTypeUtils.getPalletteForFBTypeFile(file);
+		if (palette != null) {
+			return TypeLibrary.getPaletteEntry(palette, file);
+		}
 		return null;
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
index 6f48b45..21e28b7 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.fordiac.ide.ui/META-INF/MANIFEST.MF
@@ -11,7 +11,8 @@
  org.eclipse.jface.text,
  org.eclipse.ui.workbench,
  org.eclipse.ui.editors,
- org.eclipse.ui.views.properties.tabbed
+ org.eclipse.ui.views.properties.tabbed,
+ org.eclipse.core.commands
 Bundle-Vendor: Eclipse 4diac
 Bundle-ActivationPolicy: lazy
 Bundle-Version: 1.11.3.qualifier
diff --git a/plugins/org.eclipse.fordiac.ide.ui/plugin.xml b/plugins/org.eclipse.fordiac.ide.ui/plugin.xml
index 3ceff99..c20d4c6 100644
--- a/plugins/org.eclipse.fordiac.ide.ui/plugin.xml
+++ b/plugins/org.eclipse.fordiac.ide.ui/plugin.xml
@@ -15,4 +15,31 @@
             class="org.eclipse.fordiac.ide.ui.preferences.PreferenceInitializer">
       </initializer>
    </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.eclipse.fordiac.ide.ui.handlers.ContributeHandler"
+            description="Information on how to contribute to Eclipse 4diac"
+            id="org.eclipse.fordiac.ide.ui.contribute"
+            name="Contribute">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="menu:help?after=about">
+         <command
+               commandId="org.eclipse.fordiac.ide.ui.contribute"
+               style="push">
+         </command>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commandImages">
+      <image
+            commandId="org.eclipse.fordiac.ide.ui.contribute"
+            icon="platform:/plugin/org.eclipse.ui.ide/icons/full/elcl16/smartmode_co.png">
+      </image>
+   </extension>
 </plugin>
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/handlers/ContributeHandler.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/handlers/ContributeHandler.java
new file mode 100644
index 0000000..6f2aaf2
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/handlers/ContributeHandler.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.handlers;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.fordiac.ide.ui.UIPlugin;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.browser.IWebBrowser;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class ContributeHandler extends AbstractHandler {
+	private static final String FORDIAC_CONTRIBUTION_URL = "https://www.eclipse.org/4diac/en_contribute.php"; //$NON-NLS-1$
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		IWorkbenchWindow activeWorkbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
+		if (null != activeWorkbenchWindow) {
+			IWebBrowser browser;
+			try {
+				browser = activeWorkbenchWindow.getWorkbench().getBrowserSupport().createBrowser(getClass().getName());
+				browser.openURL(new URL(FORDIAC_CONTRIBUTION_URL));
+			} catch (PartInitException | MalformedURLException e) {
+				UIPlugin.getDefault().logError("Error in opening the 4diac contribution web-page!", e);
+			}
+		}
+
+		return Status.OK_STATUS;
+	}
+}
diff --git a/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/preferences/ConnectionPreferenceValues.java b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/preferences/ConnectionPreferenceValues.java
new file mode 100644
index 0000000..837db9c
--- /dev/null
+++ b/plugins/org.eclipse.fordiac.ide.ui/src/org/eclipse/fordiac/ide/ui/preferences/ConnectionPreferenceValues.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Johannes Kepler University Linz
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Alois Zoitl - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.fordiac.ide.ui.preferences;
+
+public final class ConnectionPreferenceValues {
+
+	public static final int NORMAL_LINE_WIDTH = 0;
+
+	public static final int HIGHLIGTHED_LINE_WIDTH = 3;
+
+	public static final int SELECTED_LINE_WIDTH = 5;
+
+	public static final int HANDLE_SIZE = 9;
+
+	private ConnectionPreferenceValues() {
+		throw new UnsupportedOperationException("ConnectionPreferenceValues utility class should not be instantiated!"); //$NON-NLS-1$
+	}
+
+}
diff --git a/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua_version1.html b/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua_version1.html
index 04e9043..27cdd02 100644
--- a/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua_version1.html
+++ b/plugins/org.eclipse.fordiac.ide/html/communication/opc_ua_version1.html
@@ -412,6 +412,66 @@
 	<li>If the value you subscribed for has changed on the server, an updated value will appear at <span class="element4diac">RD_1</span> port</li>
 </ol>
 
+<h2 id="securityClients">Connect to secure servers</h2>
+
+<p class="attention"><span class="inlineTitle">Attention</span>: You need to use v1.0 of open62541 to use encryption.</p>
+
+<p>If you need to connect to OPC UA servers which have some kind of security enabled, you need some extra steps.</p>
+
+<ol>
+	<li>You need to compile mbedtls first using the mbedtls-2.7.1 tag
+	<div class="code">$ git clone https://github.com/ARMmbed/mbedtls
+$ cd mbedtls
+$ git checkout mbedtls-2.7.1
+$ mkdir build
+$ cd build
+$ cmake -DENABLE_TESTING=Off ../
+$ make
+</div>
+	</li>
+	<li>With the mbedtls compile, you need to compile open62541 with security (remember that only v1.0 is supported to be used with security enabled in 4diac Forte). For that, you need to set the UA_ENABLE_ENCRYPTION to true, which will show some new variables in CMake (MBEDCRYPTO_LIBRARY, MBEDTLS_INCLUDE_DIRS, MBEDTLS_LIBRARY and MBEDX509_LIBRARY). Set them to library files and folders according to their name. After that, you compile open62541 as before.</li>
+
+	<li>With open62541 compiled with encryption, you need now to compile forte with encryption. In CMake, set the variable FORTE_COM_OPC_UA_ENCRYPTION to true. This will also make appear new variables, similar as in open62541: 
+		<ul>
+			<li>FORTE_COM_OPC_UA_ENCRYPTION_INCLUDE_DIR: include folder in the mbedtls build directory</li>
+			<li>FORTE_COM_OPC_UA_ENCRYPTION_LIB_DIR: folder in build directory of mbedtls where the three libaries are. You could add many directories separated by a semicolon</li>
+		</ul>
+		After that, compile forte as usual.
+	</li>
+
+	<li>With forte compiled with encryption, you will need a CONFIG_FILE to write the security configurations for the endpoints to be connected by forte. The file must be written in a key=value way (no blank space between them). When trying to connect to a server, forte will read the file and look for an "ednpoint" key until it finds one whose value matches the one he's connecting to and read the following lines until the end of the file or until it finds another "endpoint" key. That means that to configure an endpoint, you write it first followed by the configurations for it. The allowed keys are:
+
+	<ul>
+		<li>endpoint: string where to connect to. Example opc.tcp://192.168.1.150:4840</li>
+	 	<li>username: string to be used as username. Example john</li>
+	 	<li>password: string to be used as password. Example doe</li>
+	 	<li>certificate: certificate file. Example /home/user/myCertificate/my_certificate.der</li>
+	 	<li>privateKey: private key file. Example /home/user/myCertificate/my_key.der</li>
+	 	<li>securityMode: integer. 1: None (default); 2:Sign; 3: Sign and encrypt</li>
+	 	<li>securityPolicy: string URI. For example http://opcfoundation.org/UA/SecurityPolicy#Basic256. Defaults to http://opcfoundation.org/UA/SecurityPolicy#None</li>
+	</ul>
+
+	The example file will look like this (let's call it configSecurity.forte):
+
+	<div class="code">endpoint=opc.tcp://192.168.1.150:4840
+username=john
+password=doe
+certificate=/home/user/myCertificate/my_certificate.der
+privateKey=/home/user/myCertificate/my_key.der
+securityPolicy=http://opcfoundation.org/UA/SecurityPolicy#Basic256
+securityMode=1
+	</div>
+
+	<p>The username and password, in theory, be used without compling the encryption libraries, but even in some tests where the security was just username and password and the security mode was NONE, the certificate and private key were needed.</p>
+	</li>
+
+	<li>Once you have the file, you need to tell forte to look for it, and for that, you should start forte and pass the flag "-oc CONFIG_FILE"
+		<div class="code">$ ./forte -oc configSecurity.forte</div>
+	</li>
+</ol>
+
+<p>You're done. Now, when your application tries to connect to opc.tcp://192.168.1.150:4840, it will use the configuration you set in the configSecurity.forte file.</p>
+
 <h1>Where to go from here?</h1>
 
 <p>Go back to Protocols index:</p>
diff --git a/plugins/org.eclipse.fordiac.ide/html/toc.xml b/plugins/org.eclipse.fordiac.ide/html/toc.xml
index ecf1b76..5968ce6 100644
--- a/plugins/org.eclipse.fordiac.ide/html/toc.xml
+++ b/plugins/org.eclipse.fordiac.ide/html/toc.xml
@@ -260,6 +260,7 @@
       <topic label="OPC UA Methods" href="html/communication/opc_ua_version1.html#methods" />
       <topic label="OPC UA Method Call" href="html/communication/opc_ua_version1.html#methodCall"/>
       <topic label="OPC UA Subscription" href="html/communication/opc_ua_version1.html#subscription"/>
+      <topic label="Connect to secure servers" href="html/communication/opc_ua_version1.html#securityClients"/>
     </topic>
  <topic href="html/communication/http.html" label="HTTP">
  </topic>