diff --git a/src/main/jastadd/Navigation.jrag b/src/main/jastadd/Navigation.jrag
index 14d2e5e639584b5c90c1e9bcf0f4ceb31c7b2250..35efffbe10ef5c7eeced2562dcbf9e922c72539f 100644
--- a/src/main/jastadd/Navigation.jrag
+++ b/src/main/jastadd/Navigation.jrag
@@ -31,6 +31,12 @@ aspect Navigation {
   syn boolean Node.isTransitionNode() = false;
   eq TransitionNode.isTransitionNode() = true;
 
+  syn boolean TransitionInformation.isTopicTransitionInformation() = false;
+  eq TopicTransitionInformation.isTopicTransitionInformation() = true;
+
+  syn boolean TransitionInformation.isServiceTransitionInformation() = false;
+  eq ServiceTransitionInformation.isServiceTransitionInformation() = true;
+
   syn TransitionNode Node.asTransitionNode() = null;
   eq TransitionNode.asTransitionNode() = this;
 
@@ -40,6 +46,12 @@ aspect Navigation {
   syn OutputSignalPlace Place.asOutputSignalPlace() = null;
   eq OutputSignalPlace.asOutputSignalPlace() = this;
 
+  syn TopicTransitionInformation TransitionInformation.asTopicTransitionInformation() = null;
+  eq TopicTransitionInformation.asTopicTransitionInformation() = this;
+
+  syn ServiceTransitionInformation TransitionInformation.asServiceTransitionInformation() = null;
+  eq ServiceTransitionInformation.asServiceTransitionInformation() = this;
+
   syn Place PlaceNode.place();
   eq Place.place() = this;
   eq RefPlace.place() = getRef().place();
diff --git a/src/main/jastadd/io/IoPN.relast b/src/main/jastadd/io/IoPN.relast
index 33cab14c9b0cd91d04dc0913ac14262ebbc35c7c..8adfab59d73ca497a0895c574cea2ce81171ca3c 100644
--- a/src/main/jastadd/io/IoPN.relast
+++ b/src/main/jastadd/io/IoPN.relast
@@ -1,13 +1,16 @@
 InputSignalBinding : PnObject ::= <TransitionID:String> <InputSignalID:String> <InputSignalValue:int>;
 OutputSignalBinding : PnObject ::= <PlaceID:String> <OutputSignalID:String> /<OutputSignalValue:String>/ EqualityOM:EqualityOutputMapping* ThresholdOM:ThresholdOutputMapping* RangeOM:RangeOutputMapping*;
-TransitionInformation ::= <Location:String> <Type:String> <InputLimit:java.lang.Integer> <OutputLimit:java.lang.Integer> <Topic:String> <SubNet:String>;
+
+TransitionInformation ::= <Location:String> <Type:String> <InputLimit:java.lang.Integer> <OutputLimit:java.lang.Integer> <SubNet:String>;
+TopicTransitionInformation : TransitionInformation ::= <Topic:String>;
+ServiceTransitionInformation : TransitionInformation ::= <ServiceName:String>;
 PlaceInformation ::= <Location:String> <Type:String> <SubNet:String>;
 
-InputSignalTransition : Transition ::= /StaticInputSignalBinding:InputSignalBinding*/  MutualInputSignalBinding:InputSignalBinding* /StaticTransitionInformation:TransitionInformation/ [MutualTransitionInformation:TransitionInformation];
+InputSignalTransition : Transition ::= /StaticInputSignalBinding:InputSignalBinding*/ MutualInputSignalBinding:InputSignalBinding* /StaticTransitionInformation:TransitionInformation/ [MutualTransitionInformation:TransitionInformation];
 OutputSignalPlace : Place ::= /OutputSignalBinding*/;
 
 OutputMapping;
 
 EqualityOutputMapping : OutputMapping ::= <Value:java.lang.Integer> <Result:java.lang.Integer>;
 ThresholdOutputMapping : OutputMapping ::= <Value:java.lang.Integer> <Result:java.lang.Integer>;
-RangeOutputMapping : OutputMapping ::= <UpperBound:java.lang.Integer> <LowerBound:java.lang.Integer> <Result:java.lang.Integer>;
+RangeOutputMapping : OutputMapping ::= <UpperBound:java.lang.Integer> <LowerBound:java.lang.Integer> <Result:java.lang.Integer>;
\ No newline at end of file
diff --git a/src/main/java/de/tudresden/inf/st/pnml/Main.java b/src/main/java/de/tudresden/inf/st/pnml/Main.java
index 6c368c9a7f73f8b893e89c1e15b03aeb4ef2d9d3..ef35dfe138c420d5c2aea474cb7ce847cdcf5ad0 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/Main.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/Main.java
@@ -18,13 +18,13 @@ public class Main {
 
         String inputPath = (args.length > 0) ? args[0] : null;
 
-        if(inputPath == null){
+     /*   if(inputPath == null){
             logger.error("No model found on given input path.");
             return;
-        }
+        }*/
 
-        //List<PetriNet> petriNets = PnmlParser.parsePnml("src/main/resources/minimal_global.pnml");
-        List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath);
+        List<PetriNet> petriNets = PnmlParser.parsePnml("src/main/nets/serviceTestNet1.pnml");
+        //List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath);
 
         List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>();
 
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 34d132be7b3d1f1a2abb3e39124db2d0ea2d24ea..cb2030894f4bf7a2ffc390ea5c14263bbaf580e2 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/ToolSpecificsParser.java
@@ -1,15 +1,12 @@
 package de.tudresden.inf.st.pnml;
 
 import de.tudresden.inf.st.constants.PnmlConstants;
-import de.tudresden.inf.st.pnml.jastadd.model.JastAddList;
-import de.tudresden.inf.st.pnml.jastadd.model.PlaceInformation;
-import de.tudresden.inf.st.pnml.jastadd.model.ToolInfo;
+import de.tudresden.inf.st.pnml.jastadd.model.*;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.ParserConfigurationException;
 
-import de.tudresden.inf.st.pnml.jastadd.model.TransitionInformation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -53,7 +50,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)) {
+                            || type.equals(PnmlConstants.TRANSITION_TYPE_TOPIC) || !type.equals(PnmlConstants.TRANSITION_TYPE_SERVICE_REQUEST)
+                            || !type.equals(PnmlConstants.TRANSITION_TYPE_SERVICE_RESPONSE)) {
                         return type;
                     } else {
                         logger.error("Error: Invalid transition type configured: " + type + ".");
@@ -95,6 +93,27 @@ public class ToolSpecificsParser {
         return null;
     }
 
+    public static String getTransitionServiceNameFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
+
+        if (toolInfos.getNumChild() > 0) {
+            try {
+                Document doc = parseToolSpecifics(toolInfos);
+                NodeList typeList = doc.getElementsByTagName(PnmlConstants.SERVICE_NAME);
+
+                if (typeList.getLength() > 0 && typeList.item(0) != null) {
+
+                    String type = typeList.item(0).getTextContent();
+                    if (!type.equals("") && type != null){
+                        return type;
+                    }
+                }
+            } catch (ParserConfigurationException | SAXException | IOException e) {
+                logger.error(e.getMessage());
+            }
+        }
+        return null;
+    }
+
     private static String getPlaceTypeFromToolSpecifics(JastAddList<ToolInfo> toolInfos) {
 
         if (toolInfos.getNumChild() > 0) {
@@ -182,15 +201,25 @@ public class ToolSpecificsParser {
 
     public static TransitionInformation getTransitionInformation(JastAddList<ToolInfo> toolInfos) {
 
-        TransitionInformation ti = new TransitionInformation();
-        ti.setInputLimit(getTransitionInputLimit(toolInfos));
-        ti.setOutputLimit(getTransitionOutputLimit(toolInfos));
-        ti.setLocation(getLocationFromToolSpecifics(toolInfos));
-        ti.setType(getTransitionTypeFromToolSpecifics(toolInfos));
-        ti.setTopic(getTransitionTopicFromToolSpecifics(toolInfos));
-        ti.setSubNet(getTransitionSubnetInfo(toolInfos));
-
-        return ti;
+        if(getTransitionTopicFromToolSpecifics(toolInfos) != null){
+            TopicTransitionInformation topicTransition = new TopicTransitionInformation();
+            topicTransition.setInputLimit(getTransitionInputLimit(toolInfos));
+            topicTransition.setOutputLimit(getTransitionOutputLimit(toolInfos));
+            topicTransition.setLocation(getLocationFromToolSpecifics(toolInfos));
+            topicTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
+            topicTransition.setTopic(getTransitionTopicFromToolSpecifics(toolInfos));
+            topicTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
+            return topicTransition;
+        }else{
+            ServiceTransitionInformation serviceTransition = new ServiceTransitionInformation();
+            serviceTransition.setInputLimit(getTransitionInputLimit(toolInfos));
+            serviceTransition.setOutputLimit(getTransitionOutputLimit(toolInfos));
+            serviceTransition.setLocation(getLocationFromToolSpecifics(toolInfos));
+            serviceTransition.setType(getTransitionTypeFromToolSpecifics(toolInfos));
+            serviceTransition.setServiceName(getTransitionServiceNameFromToolSpecifics(toolInfos));
+            serviceTransition.setSubNet(getTransitionSubnetInfo(toolInfos));
+            return serviceTransition;
+        }
     }
 
     public static PlaceInformation getPlaceInformation(JastAddList<ToolInfo> toolInfos) {
diff --git a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
index 896faeff87d654cb452029e960d62514e95cb2df..eee70f4ca471db90d5883eddcddb716686022c25 100644
--- a/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
+++ b/src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
@@ -128,10 +128,10 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 sourceIst.setName(new Name().setText(channelIst.getName().getText() + "-source"));
                 sourceIst.setId(channelIst.getId() + "-source");
 
-                TransitionInformation tInfoSource = new TransitionInformation();
+                TopicTransitionInformation tInfoSource = new TopicTransitionInformation();
                 tInfoSource.setSubNet(inSubNet);
                 tInfoSource.setLocation(inLocation);
-                tInfoSource.setTopic(channelIst.getStaticTransitionInformation().getTopic());
+                tInfoSource.setTopic(channelIst.getStaticTransitionInformation().asTopicTransitionInformation().getTopic());
 
                 // attributized infos need to be written back to XML
                 JastAddList<ToolInfo> inputToolInfoJastAddList = new JastAddList<>();
@@ -155,10 +155,10 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
                 targetIst.setName(new Name().setText(channelIst.getName().getText() + "-target"));
                 targetIst.setId(channelIst.getId() + "-target");
 
-                TransitionInformation tInfoTarget = new TransitionInformation();
+                TopicTransitionInformation tInfoTarget = new TopicTransitionInformation();
                 tInfoTarget.setSubNet(outSubNet);
                 tInfoTarget.setLocation(outLocation);
-                tInfoTarget.setTopic(channelIst.getStaticTransitionInformation().getTopic());
+                tInfoTarget.setTopic(channelIst.getStaticTransitionInformation().asTopicTransitionInformation().getTopic());
 
                 // attributized infos need to be written back to XML
                 JastAddList<ToolInfo> outputToolInfoJastAddList = new JastAddList<>();
@@ -256,7 +256,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
         }
 
         for (Transition transition : separatedNet.allTransitions()) {
-            if (!transition.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(location)) {
+            if (!transition.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic().equals(location)) {
                 logger.info("removing transition " + transition.getId() + " from net");
                 transition.removeSelf();
             }
@@ -268,6 +268,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
         return separatedNet;
     }
 
+    // todo: extend with service name
     private static ToolInfo buildToolSpecifics(String type, String location, String subnet, String topic, int inputLimit, int outputLimit, JastAddList<InputSignalBinding> inputSignalBindings) {
 
         try {
@@ -372,8 +373,13 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
 
         for (Transition t : petriNet.allTransitions()) {
 
-            logger.info("--- Transition: " + t.getName().getText() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet()
-                    + " topic: " + t.asInputSignalTransition().getStaticTransitionInformation().getTopic() + " ---------");
+            if(t.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()) {
+                logger.info("--- Transition: " + t.getName().getText() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet()
+                        + " service: " + t.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getServiceName() + " ---------");
+            }else{
+                logger.info("--- Transition: " + t.getName().getText() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet()
+                        + " topic: " + t.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic() + " ---------");
+            }
 
             for (Place p : t.asInputSignalTransition().incomingPlaces()) {
 
diff --git a/src/main/nets/serviceTestNet1.pnml b/src/main/nets/serviceTestNet1.pnml
index f4c0f14621df62462a4c6b44034f72ada6793799..e271f3dfb3f20c1f520cd9c3600bb8ef28b2ddd1 100644
--- a/src/main/nets/serviceTestNet1.pnml
+++ b/src/main/nets/serviceTestNet1.pnml
@@ -104,7 +104,7 @@
                 <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
                 </toolspecific>
                 <name>
-                    <text>p2</text>
+                    <text>p3</text>
                     <graphics>
                         <offset x="0" y="-10" />
                     </graphics>