diff --git a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
index af85722db7648dc6fa6bc9f6d5f6c15ec26f3ccc..f50129806cc61b7ec388bc966f51b6e3c4e4ca97 100644
--- a/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
+++ b/src/data/java/de/tudresden/inf/st/pnml/base/constants/PnmlConstants.java
@@ -8,16 +8,9 @@ public final class PnmlConstants {
     // topic transitions
     public static final String TRANSITION_TYPE_TOPIC = "topicTransitionType";
 
-    public static final String TRANSITION_TYPE_TOPIC_LIMITED_IN = "limitedChannelInType";
-    public static final String TRANSITION_TYPE_TOPIC_UNLIMITED_IN = "unlimitedChannelInType";
-
-    public static final String TRANSITION_TYPE_TOPIC_LIMITED_OUT = "limitedChannelOutType";
-    public static final String TRANSITION_TYPE_TOPIC_UNLIMITED_OUT = "unlimitedChannelOutType";
-
     public static final String TRANSITION_TOPIC_PUBLISHERS_DEF_KEY = "publishers";
     public static final String TRANSITION_TOPIC_PUBLISHER_DEF_KEY = "publisher";
     public static final String TRANSITION_TOPIC_PORT_ID_DEF_KEY = "id";
-    public static final String TRANSITION_TOPIC_PORT_LIMIT_DEF_KEY = "limit";
 
     public static final String TRANSITION_TOPIC_SUBSCRIBERS_DEF_KEY = "subscribers";
     public static final String TRANSITION_TOPIC_SUBSCRIBER_DEF_KEY = "subscriber";
@@ -77,6 +70,8 @@ public final class PnmlConstants {
     public static final String CHANNEL_PLACE_KEY = "placeId";
     public static final String CHANNEL_NAME_KEY = "name";
     public static final String CHANNEL_PLACE_TYPE_KEY = "placeType";
+    public static final String CHANNEL_LIMIT_KEY = "limit";
+    public static final String CHANNEL_SERVER_CAPACITY_KEY = "serverCapacity";
     public static final String CHANNEL_PLACE_TYPE_SUB_KEY = "sub";
     public static final String CHANNEL_PLACE_TYPE_PUB_KEY = "pub";
     public static final String CHANNEL_PLACE_TYPE_CLIENT_RES_KEY = "cres";
diff --git a/src/main/jastadd/base/distribution/DistributedPN.jadd b/src/main/jastadd/base/distribution/DistributedPN.jadd
index f1cccb2a51d6a9056a8c71a62cec712b2e2ff303..4d4a862b049439f277e0b0f06eb0551a7d671572 100644
--- a/src/main/jastadd/base/distribution/DistributedPN.jadd
+++ b/src/main/jastadd/base/distribution/DistributedPN.jadd
@@ -47,6 +47,14 @@ aspect PnDistribution {
         return ToolSpecificsParser.getInputSignalDefinitionsFromToolSpecifics(this.getToolspecificList());
     }
 
+    syn lazy HashMap<String, ArrayList<String>> PetriNet.getChannelElemensByKey(String placeKey){
+        return ToolSpecificsParser.getChannelElemensByKey(this.getToolspecificList(), placeKey);
+    }
+
+    syn lazy Integer PetriNet.getChannelElementLimitById(String id){
+        return ToolSpecificsParser.getChannelElementLimitById(this.getToolspecificList(), placeKey);
+    }
+
     syn lazy CommunicatorInformation PetriNet.getCommunicatorInformation(Set<String> ignoredParts){
 
         CommunicatorInformation cInfo = ToolSpecificsParser.getCommunicatorInformationFromToolSpecifics(this.getToolspecificList());
diff --git a/src/main/jastadd/base/io/IoPN.jadd b/src/main/jastadd/base/io/IoPN.jadd
index 84b3fdcebe62065de014bd2487589ac592103da8..e773abd7deab659ede966118fe6b20a0448d6783 100644
--- a/src/main/jastadd/base/io/IoPN.jadd
+++ b/src/main/jastadd/base/io/IoPN.jadd
@@ -10,5 +10,4 @@ aspect IoPnExtension{
         syn InputSignalClause SignalTransitionInformation.getClause() {
             return ToolSpecificsParser.getClauseFromToolSpecifics(containingTransition().getToolspecificList());
         }
-
 }
diff --git a/src/main/jastadd/base/io/IoPN.relast b/src/main/jastadd/base/io/IoPN.relast
index ab86c6a23431ca4f9b3fa07c83987a524f4b31a0..1b6cd16dfe16c039b2756a7139e505c51315cfb6 100644
--- a/src/main/jastadd/base/io/IoPN.relast
+++ b/src/main/jastadd/base/io/IoPN.relast
@@ -17,4 +17,4 @@ abstract Port;
 abstract TopicPort : Port ::= <PlaceId:String> <Limit:int>;
 SubscriberPort : TopicPort;
 PublisherPort : TopicPort;
-ServiceChannel : Port ::= <RequestPlaceId:String> <ResponsePlaceId:String> <Id:String>;
\ No newline at end of file
+ServiceChannel : Port ::= <RequestPlaceId:String> <ResponsePlaceId:String> <Id:String> <Capacity:int>;
\ No newline at end of file
diff --git a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
index 4d361cd8fbeecffdc76869ea0172a0f30e9b57c3..5ca907e6960c75ef10565b27fca637548e32e7a0 100644
--- a/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
+++ b/src/main/jastadd/base/parsing/ToolSpecificsParser.jadd
@@ -46,6 +46,58 @@ aspect ToolSpecificsParser{
             return new InputSignalClause();
         }
 
+        public static Integer getChannelElementLimitById(JastAddList<ToolInfo> toolInfos, String id){
+
+            HashMap<String, ArrayList<String>> res =  new HashMap<String, ArrayList<String>>();
+
+            try {
+                Document doc = parseToolSpecifics(toolInfos);
+                org.w3c.dom.NodeList portDefList = doc.getElementsByTagName(PnmlConstants.CHANNEL_PORT_KEY);
+
+                for(int i = 0; i < portDefList.getLength(); i++){
+                    Element portElem = (Element) portDefList.item(i);
+                    if(portElem.getAttribute(PnmlConstants.CHANNEL_PLACE_KEY).equals(id)){
+                        if(res.containsKey(portElem.getAttribute(PnmlConstants.CHANNEL_NAME_KEY))){
+                            return Integer.valueOf(portElem.getAttribute(PnmlConstants.CHANNEL_LIMIT_KEY));
+                        }
+                    }
+                }
+
+            } catch(ParserConfigurationException | SAXException | IOException e){
+                logger.error(e.getMessage());
+            }
+
+            return -1;
+        }
+
+        public static HashMap<String, ArrayList<String>> getChannelElemensByKey(JastAddList<ToolInfo> toolInfos, String channelTypeKey){
+
+            HashMap<String, ArrayList<String>> res =  new HashMap<String, ArrayList<String>>();
+
+            try {
+                Document doc = parseToolSpecifics(toolInfos);
+                org.w3c.dom.NodeList portDefList = doc.getElementsByTagName(PnmlConstants.CHANNEL_PORT_KEY);
+
+                for(int i = 0; i < portDefList.getLength(); i++){
+                    Element portElem = (Element) portDefList.item(i);
+                    if(portElem.getAttribute(PnmlConstants.CHANNEL_PLACE_TYPE_KEY).equals(channelTypeKey)){
+                        if(res.containsKey(portElem.getAttribute(PnmlConstants.CHANNEL_NAME_KEY))){
+                            res.get(PnmlConstants.CHANNEL_NAME_KEY).add(portElem.getAttribute(PnmlConstants.CHANNEL_PLACE_KEY));
+                        } else {
+                            ArrayList<String> placeList = new ArrayList<>();
+                            placeList.add(portElem.getAttribute(PnmlConstants.CHANNEL_PLACE_KEY));
+                            res.put(portElem.getAttribute(PnmlConstants.CHANNEL_NAME_KEY), placeList);
+                        }
+                    }
+                }
+
+            } catch(ParserConfigurationException | SAXException | IOException e){
+                logger.error(e.getMessage());
+            }
+
+            return res;
+        }
+
         public static Map<String, String> getInputSignalDefinitionsFromToolSpecifics(JastAddList<ToolInfo> toolInfos){
 
             Map<String, String> inputSignalDefs = new HashMap<>();
@@ -146,6 +198,10 @@ aspect ToolSpecificsParser{
             return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.SERVICE_NAME);
         }
 
+        public static String getTransitionServiceCapacityFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
+            return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.CHANNEL_SERVER_CAPACITY_KEY);
+        }
+
         public static String getNodeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
             return getElementByKeyFromToolSpecifics(toolInfos, PnmlConstants.NODE_KEY);
         }
@@ -357,16 +413,13 @@ aspect ToolSpecificsParser{
 
             if (getTransitionTopicFromToolSpecifics(toolInfos) != null) {
                 TopicTransitionInformation topicTransition = new TopicTransitionInformation();
-                // topicTransition.setNode(getNodeFromToolSpecifics(toolInfos));
-                // topicTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
                 topicTransition.setTopic(getTransitionTopicFromToolSpecifics(toolInfos));
-                // topicTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
 
                 JastAddList<Port> pubPorts = getPorts(toolInfos,
                         PnmlConstants.TRANSITION_TOPIC_PUBLISHERS_DEF_KEY,
                         PnmlConstants.TRANSITION_TOPIC_PUBLISHER_DEF_KEY,
                         PnmlConstants.TRANSITION_TOPIC_PORT_ID_DEF_KEY,
-                        PnmlConstants.TRANSITION_TOPIC_PORT_LIMIT_DEF_KEY);
+                        PnmlConstants.CHANNEL_LIMIT_KEY);
                 for(Port p : pubPorts){
                     topicTransition.addPublisherPort(p.asPublisherPort());
                 }
@@ -375,7 +428,7 @@ aspect ToolSpecificsParser{
                         PnmlConstants.TRANSITION_TOPIC_SUBSCRIBERS_DEF_KEY,
                         PnmlConstants.TRANSITION_TOPIC_SUBSCRIBER_DEF_KEY,
                         PnmlConstants.TRANSITION_TOPIC_PORT_ID_DEF_KEY,
-                        PnmlConstants.TRANSITION_TOPIC_PORT_LIMIT_DEF_KEY);
+                        PnmlConstants.CHANNEL_LIMIT_KEY);
                 for(Port s : subPorts){
                     topicTransition.addSubscriberPort(s.asSubscriberPort());
                 }
@@ -385,16 +438,14 @@ aspect ToolSpecificsParser{
 
             if (getTransitionServiceNameFromToolSpecifics(toolInfos) != null) {
                 ServiceTransitionInformation serviceTransition = new ServiceTransitionInformation();
-                // serviceTransition.setNode(getNodeFromToolSpecifics(toolInfos));
-                // serviceTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
                 serviceTransition.setServiceName(getTransitionServiceNameFromToolSpecifics(toolInfos));
-                // serviceTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
 
                 JastAddList<Port> servicePorts = getPorts(toolInfos,
                         PnmlConstants.TRANSITION_SERVICE_CHANNELS_KEY,
                         PnmlConstants.TRANSITION_SERVICE_CHANNEL_KEY,
                         PnmlConstants.TRANSITION_SERVICE_REQUEST_KEY,
                         PnmlConstants.TRANSITION_SERVICE_RESPONSE_KEY);
+
                 for(Port s : servicePorts){
                     serviceTransition.addClientChannel(s.asServiceChannel());
                 }
@@ -402,6 +453,7 @@ aspect ToolSpecificsParser{
                 ServiceChannel sc = new ServiceChannel();
                 sc.setRequestPlaceId(getServerInputFromToolSpecifics(toolInfos));
                 sc.setResponsePlaceId(getServerOutputFromToolSpecifics(toolInfos));
+                sc.setCapacity(Integer.valueOf(getTransitionServiceCapacityFromToolSpecifics(toolInfos)));
                 serviceTransition.setServerChannel(sc);
 
                 return serviceTransition;
@@ -409,7 +461,6 @@ aspect ToolSpecificsParser{
 
             SignalTransitionInformation transitionInformation = new SignalTransitionInformation();
             transitionInformation.setNode(getNodeFromToolSpecifics(toolInfos));
-            //transitionInformation.setType(getTransitionTypeFromToolSpecifics(toolInfos));
             transitionInformation.setSubNet(getTransitionSubnetInfo(toolInfos));
 
             return transitionInformation;