diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java
index c5bb3e52e7948e69de66b756e1c9b2e4829dde06..6bb2a0ad465528a445b430e577dabec8f2f70c46 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/PnmlConstants.java
@@ -12,7 +12,9 @@ public final class PnmlConstants {
 
     public static final String LOCATION_KEY = "location";
     public static final String TYPE_KEY = "type";
-    public static final String LIMIT_KEY = "limit";
+    public static final String INPUT_LIMIT_KEY = "inputlimit";
+    public static final String OUTPUT_LIMIT_KEY = "outputlimit";
+    public static final String SUBNET_KEY = "subnet";
     public static final String TOPIC_KEY = "topic";
 
     public static final String INPUT_SIGNAL_BINDINGS_KEY = "inputsignalbindings";
diff --git a/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java b/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
index 8219bd70c8ea61f6cf975e17ec4fd39c99368319..7c98d659b1fa7f452a84a5f7f8d55f0085a40872 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
@@ -7,6 +7,8 @@ import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.ParserConfigurationException;
 
+import fr.lip6.move.pnml.framework.utils.PNMLUtils;
+import fr.lip6.move.pnml.ptnet.hlapi.PetriNetDocHLAPI;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -49,7 +51,8 @@ public class ToolSpecificsParser {
 
                 if (typeList.getLength() > 0 && typeList.item(0) != null) {
                     String type = typeList.item(0).getTextContent();
-                    if (!type.equals(PnmlConstants.TRANSITION_TYPE_CONTINUOUS) || type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE) || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) {
+                    if (!type.equals(PnmlConstants.TRANSITION_TYPE_CONTINUOUS) || type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE)
+                            || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC)) {
                         return type;
                     } else {
                         logger.error("Error: Invalid transition type configured.");
@@ -61,7 +64,7 @@ public class ToolSpecificsParser {
             }
         }
 
-        return "";
+        return null;
     }
 
     public static String getPlaceTypeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
@@ -84,8 +87,7 @@ public class ToolSpecificsParser {
                 logger.error(e.getMessage());
             }
         }
-
-        return "";
+        return null;
     }
 
     public static String getTopic(JastAddList<ToolInfo> toolInfos) {
@@ -109,25 +111,72 @@ public class ToolSpecificsParser {
                 logger.error(e.getMessage());
             }
         }
-
         logger.error("Error: Tried to get sender transition of non-channel transition.");
         return null;
     }
 
+    private static String getSubnetInfoInternal(JastAddList<ToolInfo> toolInfos){
+
+        if (toolInfos.getNumChild() > 0) {
+            try{
+                Document doc = parseToolSpecifics(toolInfos);
+                String typeTrans = getTransitionTypeFromToolSpecifics(toolInfos);
+                String typePlace = getPlaceTypeFromToolSpecifics(toolInfos);
+
+                String type = typePlace == null ? typeTrans : typePlace;
+
+                if(type != null && (type.equals(PnmlConstants.TRANSITION_TYPE_DISCRETE)
+                        || type.equals(PnmlConstants.PLACE_TYPE_CONTINUOUS) || type.equals(PnmlConstants.PLACE_TYPE_CONTINUOUS)
+                || type.equals(PnmlConstants.PLACE_TYPE_DISCRETE))){
+
+                    NodeList snList = doc.getElementsByTagName(PnmlConstants.SUBNET_KEY);
+
+                    if (snList.getLength() > 0 && snList.item(0) != null) {
+                        return snList.item(0).getTextContent();
+                    }
+                }
+            }catch (ParserConfigurationException | SAXException | IOException e) {
+                logger.error(e.getMessage());
+            }
+        }
+        return null;
+    }
+
     public static String getTransitionSubnetInfo(JastAddList<ToolInfo> toolInfos){
-        return "";
+        return getSubnetInfoInternal(toolInfos);
     }
 
     public static String getPlaceSubnetInfo(JastAddList<ToolInfo> toolInfos){
-        return "";
+        return getSubnetInfoInternal(toolInfos);
+    }
+
+    private static int getTransitionLimitsInternal(JastAddList<ToolInfo> toolInfos, String limitType){
+        if (toolInfos.getNumChild() > 0) {
+            try{
+                Document doc = parseToolSpecifics(toolInfos);
+                String transitionType = getTransitionTypeFromToolSpecifics(toolInfos);
+
+                if(transitionType != null && (transitionType.equals(PnmlConstants.TRANSITION_TYPE_TOPIC))){
+
+                    NodeList limList = doc.getElementsByTagName(limitType);
+
+                    if (limList.getLength() > 0 && limList.item(0) != null) {
+                        return Integer.valueOf(limList.item(0).getTextContent());
+                    }
+                }
+            }catch (ParserConfigurationException | SAXException | IOException e) {
+                logger.error(e.getMessage());
+            }
+        }
+        return -1;
     }
 
     public static int getTransitionOutputLimit(JastAddList<ToolInfo> toolInfos) {
-        return 0;
+        return getTransitionLimitsInternal(toolInfos, PnmlConstants.OUTPUT_LIMIT_KEY);
     }
 
     public static int getTransitionInputLimit(JastAddList<ToolInfo> toolInfos) {
-        return 0;
+        return getTransitionLimitsInternal(toolInfos, PnmlConstants.INPUT_LIMIT_KEY);
     }
 
     private static Document parseToolSpecifics(JastAddList<ToolInfo> toolInfos) throws ParserConfigurationException, SAXException, IOException {
@@ -139,7 +188,6 @@ public class ToolSpecificsParser {
 
         Document doc = dBuilder.parse(fromStringBuffer(toolInfoStringBuffer));
         doc.getDocumentElement().normalize();
-
         return doc;
     }